2010-09-28 16 views
22

Parametreleri bir SQL Server komut dosyasına geçirmek mümkün mü? Veri tabanı oluşturan bir komut dosyası var. Sqlcmd kullanarak bir toplu iş dosyasından çağrılır. \ Dev \ SAMPLE.mdf:Parametreler sqlcmd ile adlandırılan bir SQL Server komut dosyasına nasıl iletilir?

CREATE DATABASE [SAMPLE] ON PRIMARY 
(NAME = N'SAMPLE', FILENAME = N'c:\dev\SAMPLE.mdf' , SIZE = 23552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) 
LOG ON 
(NAME = N'SAMPLE_log', FILENAME = N'c:\dev\SAMPLE_log.ldf' , SIZE = 29504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) 

Ben C' kodlamalısınız kalmamak veritabanı ve günlük için Dosya adlarında geçmek isterler şu şekildedir: SQL script Parçasıdır 've' C: \ dev \ SAMPLE_log.ldf '.

Bunu yapmanın bir yolu var mı? Microsoft SQL Server 2008 Express çalıştırıyorum. Daha fazla bilgiye ihtiyacın olursa haberim olsun.

cevap

32

Değişkenleri geçirmek için -v anahtarını kullanın.

sqlcmd -v varMDF="C:\dev\SAMPLE.mdf" varLDF="C:\dev\SAMPLE_log.ldf" 

Sonra komut dosyası Bu durumda

CREATE DATABASE [SAMPLE] ON PRIMARY 
(NAME = N'SAMPLE', FILENAME = N'$(varMDF)' , SIZE = 23552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) 
LOG ON 
(NAME = N'SAMPLE_log', FILENAME = N'$(varLDF)' , SIZE = 29504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) 
+4

yılında, muhtemelen de bir değişken '$ (DBName)' veritabanı adı kendisi .... –

+0

için alıyorum hataları tanımlamak istediğiniz çalıştırdığımda: 'C:' yakınında yanlış sözdizimi. 'C' etiketi zaten bildirildi. Etiket adları, bir sorgu partisi veya saklı yordam içinde benzersiz olmalıdır. – Jeremy

+0

Eğik çizgilerden veya tırnaklardan kaçmak gibi çeşitli şeyler deniyorum. Bu hataları düzeltmek için herhangi bir fikrin var mı? – Jeremy

İlgili konular