簡體   English   中英

從另一個SQL腳本運行SQL腳本

[英]Run sql script from another sql script

我要運行指定文件夾中的所有腳本。 我創建了包含腳本路徑的sql-cursor。

我想執行腳本並記錄它們的使用情況,但是如何在其他sql腳本中運行sql腳本。 在Visual Studio的sqlproj中使用了':r'語句,但是在我的情況下它不起作用,那么如何解決呢? 我使用SQL Server 2016。

    FETCH NEXT FROM ScriptsFromFolderCursor INTO @scriptName
    WHILE @@FETCH_STATUS = 0
    BEGIN 
        DECLARE @fullScriptPath nvarchar(1024) = @MyPath + @scriptName

        -- WHAT SHOULD BE THERE ??
        :r @fullScriptPath

        -- log usage of script
        INSERT INTO  DeployedSqlScripts([ScriptName], [Version],[DateUtc])
        VALUES (@fullScriptPath, @DbVersion, GetUtcDate())

        FETCH NEXT FROM ScriptsFromFolderCursor INTO @scriptName
    END

我收到錯誤消息:

錯誤SQL72001:包含的文件@fullScriptPath(C:\\ GIT \\ myPath \\ @FULLSCRIPTPATH)不存在。 (54、8)

不知道會收到什么錯誤,但是從外觀上看,您正在嘗試使用SQLCMD語句( :r

您是否已在SQLCMD模式下執行此腳本? 文檔-https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility

如果您願意使用T-SQL以外的腳本環境,則可以通過execsql.py( http://pypi.python.org/pypi/execsql )執行此操作。 INCLUDE元命令( http://pythonhosted.org/execsql/#include )將允許您在運行的腳本中插入另一個SQL腳本,以及將所有CSV文件導入目錄中的示例( http://pythonhosted.org/ execsql /#example13 )可以很容易地修改為用於在目錄中包含所有SQL腳本。

免責聲明:我寫了execsql.py。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM