Forum

Incorrect syntax ne...
 
Bildirimler
Hepsini Temizle

Incorrect syntax near the keyword 'Constraint'

13 Yazılar
4 Üyeler
0 Reactions
5,287 Görüntüleme
(@AdemKIRBIC)
Gönderiler: 154
Estimable Member
Konu başlatıcı
 

Merhaba.

Sql Server 2008 management studio üzerinde sql öğrenmeye çalışıyorum.netten aldığım bir pdf teki örneği yapmaya çalışıyorum ancak hata veriyor.Kodu aşağıda veriyorum.Nerede hata yaptığımı söylermisiniz ? şimdiden teşekkür ederim.

Verdiği hata:

Msg 156, Level 15, State 1, Line 24
Incorrect syntax near the keyword 'CONSTRAINT'.
Msg 156, Level 15, State 1, Line 46
Incorrect syntax near the keyword 'CONSTRAINT'.
Msg 156, Level 15, State 1, Line 66
Incorrect syntax near the keyword 'CONSTRAINT'.
Msg 156, Level 15, State 1, Line 75
Incorrect syntax near the keyword 'CONSTRAINT'.
 

 create database SanalSite on
(
    Name='SanalSite',
    Filename='C:\Databases\Sanalsite.mdf',
    Size=10MB,
    Maxsize=unlimited,
    Filegrowth=2mb
)
LOG ON
(
    Name='SanalSite.log',
    Filename='C:\Databases\SanalSite\Site_log.ldf',
    Size=2MB,
    Maxsize=2GB,
    Filegrowth=10
)

create table Kategori    
(
    KategoriId int NOT NULL,
    KategoriAd nvchar(50) NULL,
    UstkategoriId int NULL,
    CONSTRAINT PK_Kategori PRIMARY KEY (KategoriId)
    CONSTRAINT FK_Kategori FOREIGN KEY (UstKategoriId)
            References Kategori (KategoriId)
)
create table Urun
(
    UrunId int NOT NULL,
    UrunAd nvarchar(50) NULL,
    KategoriId int NULL,
    CONSTRAINT PK_Urun PRIMARY KEY (UrunId)
)
create table Ozellik
(
    OzellikId int NOT NULL,
    OzellikAd nvarchar(50) NULL,
    CONSTRAINT PK_Ozellik PRIMARY KEY (OzellikId)
)
create table UrunOzellik
(
    UrunId int NOT NULL,
    OzellikId int NOT NULL,
    Aciklama nvarchar(50) NOT NULL,
    CONSTRAINT PK_UrunOzellik PRIMARY KEY (UrunID,OzellikId)
    CONSTRAINT FK_UrunOzellik_Ozellik FOREIGN KEY (OzellikId)
            references Ozellik(OzellikId)
    CONSTRAINT FK_UrunOzellik_Urun FOREIGN KEY (UrunId)
            references Urun (UrunId)
)
create table Musteri
(
    MusteriId int NOT NULL,
    AdSoyad nvarchar(50) NULL,
    Adres nvarchar(100) NULL,
    TelNo char(11) NULL,
    CONSTRAINT PK_Musteri PRIMARY KEY (MusteriId)
)
create table Siparis
(
    SiparisId int NOT NULL,
    MusteriId int NULL,
    Tarih smalldatetime NULL,
    Tutar smallmoney NULL,
    CONSTRAINT PK_Siparis PRIMARY KEY (SiparisId)
    CONSTRAINT FK_Siparis_Musteri FOREIGN KEY (MusteriId)
            references Musteri (MusteriId)
)
create table SiparisUrun
(
    SiparisId int NOT NULL,
    UrunId int NOT NULL,
    Adet int NULL,
    CONSTRAINT PK_SiparisUrun PRIMARY KEY (SiparisId,UrunId)
    CONSTRAINT FK_SiparisUrun_Siparis FOREIGN KEY (SiparisId)
            references Siparis (SiparisId)
    CONSTRAINT FK_SiparisUrun_Urun FOREIGN KEY (UrunId)
            references Urun (UrunId)
)

 
Gönderildi : 24/02/2011 02:15

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

Hata verdiği satırların bir üstündeki satırların sonuna virgül koymalısın.

Hata mesajlarına sırayla çift tıkla ve bir satırı seçili yapacak, o satırın üstündeki satırın sonuna virgül koy. Yada satır numarasından da yapabilirsin.

Saygılar.

 
Gönderildi : 24/02/2011 10:41

(@AdemKIRBIC)
Gönderiler: 154
Estimable Member
Konu başlatıcı
 

Verdiğiniz cevap için teşekkür ederim.Şimdide şu şekilde bir hata veriyor.

 Msg 2715, Level 16, State 7, Line 18
Column, parameter, or variable #2: Cannot find data type nvchar.

hata koduna çift tıkladığım zaman şu satırı işaret ediyor:

 create table Kategori

Ne yapmalıyım ?

 
Gönderildi : 24/02/2011 23:16

(@AdemKIRBIC)
Gönderiler: 154
Estimable Member
Konu başlatıcı
 

son verdiği hatayı çözdüm teşekkürler.Benim sormak istediğim başka bir husus daha vardı.

create database SanalSite on
(
    Name='SanalSite',
    Filename='C:\Databases\Sanalsite.mdf',
    Size=10MB,
    Maxsize=unlimited,
    Filegrowth=2mb
)
LOG ON
(
    Name='SanalSite.log',
    Filename='C:\Databases\SanalSite\Site_log.ldf',
    Size=2MB,
    Maxsize=2GB,
    Filegrowth=10
)

 

Bu kodları en başa yazdığım halde neden t-sql ile database oluşturamadım ?  object explorer içinde database sağ tıklayarak new database dediğim zaman ancak oluşturabildim.Birde t-sql kodlarla bir database oluşturmadan önce burada belittiğim dizin içerisinde dosyamı oluşturmam lazım ? (SanalSite.mdf ile Site_log.ldf dosyaları için)

 

 

 
Gönderildi : 25/02/2011 00:39

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

Hocam kodlar sorunsuz. Yalniz belirttiginiz klasörler daha onceden oluşturulmuş olmalı.

Ayrıca bu kodun en başına USE Master sonuna da GO ifadesi ekleyip denermisin.

 
Gönderildi : 25/02/2011 10:48

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 


son verdiği hatayı çözdüm teşekkürler.Benim sormak istediğim başka bir husus daha vardı.


create database SanalSite on
(
    Name='SanalSite',
    Filename='C:\Databases\Sanalsite.mdf',
    Size=10MB,
    Maxsize=unlimited,
    Filegrowth=2mb
)
LOG ON
(
    Name='SanalSite.log',
    Filename='C:\Databases\SanalSite\Site_log.ldf',
    Size=2MB,
    Maxsize=2GB,
    Filegrowth=10
)


 


Bu kodları en başa yazdığım halde neden t-sql ile database oluşturamadım ?  object explorer içinde database sağ tıklayarak new database dediğim zaman ancak oluşturabildim.Birde t-sql kodlarla bir database oluşturmadan önce burada belittiğim dizin içerisinde dosyamı oluşturmam lazım ? (SanalSite.mdf ile Site_log.ldf dosyaları için)


 


 



C:\Databases\ klasöründe sql server'ın yazma yetkisi var mı? Bir de bu sorguyu çalıştırmaya çalışan kullanıcının db oluşturma yetkisi var mı?

 
Gönderildi : 25/02/2011 13:20

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

Gui kullanarak DB oluşabildiğine göre muhtemelen yetkilerde bir problem yok diye düşünüyorum hocam.

 
Gönderildi : 25/02/2011 13:45

(@selahattinsadoglu)
Gönderiler: 826
Prominent Member
 

Merhaba,

 

Spesifik bir lokasyonda T-SQL kullanarak veritabanını oluşturmak için kullanmanız gereken kod ;

USE [master]
GO

    CREATE DATABASE [AdventureWorks] ON  PRIMARY
    ( NAME = N'AdventureWorks_Data', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf' , SIZE = 167872KB , MAXSIZE = UNLIMITED, FILEGROWTH = 16384KB )
     LOG ON
    ( NAME = N'AdventureWorks_Log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Log.ldf' , SIZE = 2048KB , MAXSIZE = 2048GB , FILEGROWTH = 16384KB )
    GO

 

Ve ya ;

 

USE master
GO
CREATE DATABASE Sales
ON
( NAME = Sales_dat,
   FILENAME = 'c:\program files\microsoft sql server\mssql\data\saledat.mdf',
   SIZE = 10,
   MAXSIZE = 50,
   FILEGROWTH = 5 )
LOG ON
( NAME = 'Sales_log',
   FILENAME = 'c:\program files\microsoft sql server\mssql\data\salelog.ldf',
   SIZE = 5MB,
   MAXSIZE = 25MB,
   FILEGROWTH = 5MB )
GO

yukarıdaki yazılı olan bazı yerleri kendinize göre değiştirip tekrar deneyiniz.

Saygılar,

 
Gönderildi : 25/02/2011 14:20

(@cozumpark)
Gönderiler: 16307
Illustrious Member Yönetici
 

Gui kullanarak DB oluşabildiğine göre muhtemelen yetkilerde bir problem yok diye düşünüyorum hocam.


Çok haklısınız. Sizin önerdiğiniz yöntem işe yaramazsa ek bir kontrol olarak yazdım zaten. Elle oluşturulabiliyorsa klasör zaten vardır diye [;)] Kolay gelsin

 
Gönderildi : 25/02/2011 17:17

(@AdemKIRBIC)
Gönderiler: 154
Estimable Member
Konu başlatıcı
 

Tüm üstadlara ilgilerinden dolayı teşekkür ederim.

Yazmış olduğunuz komutları kullanıp denedikten sonra sonucu sizlerle paylaşacağım.

SQL Server Management Studio aracını windows authentication ile açıyorum.Windows user da Administrator hakları mevcut.Gui ile database oluşturabiliyorum ancak  bunu varsayılan olarak C:\Program Files\Microsoft SQL Server\MSSQL10.PCADI\MSSQL\DATA altına atıyor sanırım..Sizin vermiş olduğunuz ;

Use Master

Go

komutlarından sonra belirttiğimiz path içinde oluşturacaktır değilmi ?

 

 
Gönderildi : 28/02/2011 23:08

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

evet kodda belirttiğin pathte oluşacak. Ama pathte yzdıpğın klasörler daha önceden oluşturulmuş olmalı.

 
Gönderildi : 28/02/2011 23:38

(@AdemKIRBIC)
Gönderiler: 154
Estimable Member
Konu başlatıcı
 

Hemen bir deneme yaptım.Oldu.Teşekkürler.Peki,

Use Master kodundaki master yerine başka bir şey yazamazmıyız ? bu referans içinmi yoksa kopyasınımı oluşturuyor ?

 
Gönderildi : 28/02/2011 23:40

(@AhmetRende)
Gönderiler: 138
Estimable Member
 

Veritabanı bilgileri, kullanıcı bilgileri vs master dbsinde tutulur. Use master dememizin sebebide o. Master yerine başka bir db yazamayız. Zaten hata verir.

Saygılar.

 
Gönderildi : 01/03/2011 10:38

Paylaş: