2009-09-10 7 views
1

Мы используем SQL и имеем файл сценария для создания базы данных и таблиц. Я пытаюсь написать общий скрипт, который будет выполняться на всех машинах dev/prod. Имя файла, которое я даю, это FILENAME = N'c: \ Program Files \ Microsoft SQL Server \ MSSQL.3 \ MSSQL \ DATA \ DBname .mdf 'Общий сценарий настройки базы данных

Он работает на моей машине, но не на всех машинах dev, поскольку у всех есть разные пути для SQL. Есть ли способ сделать этот параметр общим? Я хочу, чтобы этот сценарий запускался на всех машинах, на которых установлен SQL-сервер.

ответ

1

Я думаю, проблема в том, что на разных машинах у вас есть экземпляры SQL Server в разных папках. Вы можете проверить в ОС Windows Реестре, что это имя папки вашего экземпляра:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL 

Пример записи

Name - Data 
MSSQLSERVER - MSSQL.1 
SQL2k5 - MSSQL.2 

А потом в другой ветке, например:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Setup 

вы можете найти путь к каталогу с файлами данных.

0

Если вам нужно различать определенные части ваших сценариев на основе того, где вы их используете, вы можете использовать SQLCMD.

У меня был успех с этим подходом в прошлом, когда мне нужно было выполнить восстановление базы данных, и я знал, что пути данных различаются между ящиками.

Нечто подобное должно работать:

SQLCMD -SMyDatabaseServer 
     -Q "RESTORE DATABASE $(DatabaseName) FROM DISK = '$(BackupLocation)\$(DatabaseName).bak' WITH NORECOVERY, STATS=10, REPLACE;" 
     -v 
     DatabaseName = MyDatabase 
     BackupLocation = "C:\SomeLocation" 
     -d master 
     -u [User] 
     -p [Password] 

Это версия встроенного запроса. Если вам нужно работать с файлами сценариев SQL, измените раздел -Q "..." на -i yourFile.sql и скопируйте и вставьте сам запрос в файл sql. SQLCMD возьмет ваши переменные, определенные ключом -v, и заменит их аналоги в вашем запросе, заданном как -Q или -i.

Для получения более подробной информации см.: http://msdn.microsoft.com/en-us/library/ms180944.aspx.

Смежные вопросы