Anasayfa » Forum

Incorrect syntax ne...
 
Bildirimler

Incorrect syntax near the keyword 'Constraint'  

  RSS
Adem KIRBIC
(@AdemKIRBIC)
Üye

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)
)

Alıntı
Gönderildi : 24/02/2011 01:15
Ahmet Rende
(@AhmetRende)
Üye

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.

CevapAlıntı
Gönderildi : 24/02/2011 09:41
Adem KIRBIC
(@AdemKIRBIC)
Üye

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 ?

CevapAlıntı
Gönderildi : 24/02/2011 22:16
Adem KIRBIC
(@AdemKIRBIC)
Üye

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)

 

 

CevapAlıntı
Gönderildi : 24/02/2011 23:39
Ahmet Rende
(@AhmetRende)
Üye

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.

CevapAlıntı
Gönderildi : 25/02/2011 09:48
CozumPark
(@cozumpark)
Kıdemli Üye

[quote user="Adem KIRBIC"]

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)


 


 


[/quote]


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ı?

CevapAlıntı
Gönderildi : 25/02/2011 12:20
Ahmet Rende
(@AhmetRende)
Üye

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

CevapAlıntı
Gönderildi : 25/02/2011 12:45
Selahattin SADOGLU
(@SelahattinSADOGLU)
Üye

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,

CevapAlıntı
Gönderildi : 25/02/2011 13:20
CozumPark
(@cozumpark)
Kıdemli Üye

[quote user="Webeffect"]Gui kullanarak DB oluşabildiğine göre muhtemelen yetkilerde bir problem yok diye düşünüyorum hocam.
[/quote]


Ç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

CevapAlıntı
Gönderildi : 25/02/2011 16:17
Adem KIRBIC
(@AdemKIRBIC)
Üye

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 ?

 

CevapAlıntı
Gönderildi : 28/02/2011 22:08
Ahmet Rende
(@AhmetRende)
Üye

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

CevapAlıntı
Gönderildi : 28/02/2011 22:38
Adem KIRBIC
(@AdemKIRBIC)
Üye

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 ?

CevapAlıntı
Gönderildi : 28/02/2011 22:40
Ahmet Rende
(@AhmetRende)
Üye

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.

CevapAlıntı
Gönderildi : 01/03/2011 09:38
Paylaş: