Как выполнять вложенные скрипты в Sql Server 2005+ - PullRequest
3 голосов
/ 20 февраля 2009

Кто-нибудь из ниндзя sql знает, как выполнить скрипт (.sql) из другого скрипта? Специально для платформы Sql Server 2005+. Например. код psudeo следует:

ScriptA содержимое

RESTORE DATABASE [MyDbName]
    FROM  
        DISK = N'path' WITH  FILE = 1
.......
GO
Exec c:\scripts\ScriptB.sql

ScriptB содержимое

USE [MyDbName]
GO
IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MyTableName]') AND type in (N'U'))
CREATE TABLE [dbo].[MyTableName]
........
GO

Ответы [ 4 ]

3 голосов
/ 20 февраля 2009

Вы можете включить режим SQLCMD из SSMS или запустить свой скрипт в SQLCMD.exe. SQLCMD поддерживает переменные сценария и ссылки на сценарии.

---script1-----
create table ....
:r path/to/another/script (which can reference others)
---------------

надеюсь, это поможет

0 голосов
/ 20 февраля 2009

Core MS SQL этого не делает, но некоторые инструменты имеют некоторые макроэкономические возможности (то есть готовый клиентский сайт).

SQLCMD поддерживает ": r" для импорта другого файла.

0 голосов
/ 20 февраля 2009

Насколько я понимаю, вам не нужно объединять два сценария. Вы можете просто выполнить первое, а затем другое.

Вы можете сделать это, создав vbscript, который загружает файлы .sql, а затем использует ADODB.Connection для выполнения двух скриптов.

Этот VBScript должен это сделать:

Set con = CreateObject("ADODB.Connection")
con.ConnectionString = "*** Database connection string here ***"
con.Open 

Set fso = CreateObject("Scripting.FileSystemObject")

Set sqlFile = fso.OpenTextFile("scriptA.sql", 1)
con.Execute sqlFile.ReadAll
sqlFile.Close

Set sqlFile = fso.OpenTextFile("scriptB.sql", 1)
con.Execute sqlFile.ReadAll
sqlFile.Close

Set fso = Nothing 
Set con = Nothing 
0 голосов
/ 20 февраля 2009

В следующей статье приведены примеры того, как этого можно достичь.

http://www.sqlservercentral.com/articles/Administering/scriptrunner/292/

Это бесплатный инструмент, который может запускать несколько сценариев, но не из существующего сценария.

http://www.xsqlsoftware.com/Product/ProductDetails.aspx?ProdID=ScriptExecutor

Вот пример выполнения скрипта из другого скрипта путем вызова утилиты isql с использованием хранимой процедуры xp_cmdshell.

http://www.sqlservercentral.com/articles/Administering/scriptscheduling/450/

Должно быть то, что вам нужно, чтобы начать, но напишите мне, если вам нужна дополнительная помощь.

Ура, Джон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...