所以我一直在寻找一种方法来开发一个脚本,该脚本将使用SQL Server Management Studio从我的项目文件夹中执行其他脚本,到目前为止还没有其他解决方案有效。我尝试编写一个包含sqlcommandline内容的脚本:
sqlcmd -S.\SQLExpress -imyScript.sql;
这不起作用,根据我对@\path\to\script.sql
的理解不会有任何其他想法吗?或者我应该开始考虑编写程序?在哪种情况下,有人能指出我正确的方向吗?
提前感谢你的帮助。
答案 0 :(得分:0)
就个人而言,我会考虑编写存储过程。 MSDN documentation很好,如果你进行快速搜索,网上有很多资源。
或者你可以做这样的事情来实现它(你需要有权执行命令shell等):
CREATE TABLE ##SQLFiles ( SQLFileName VARCHAR(2000))
GO
INSERT INTO ##SQLFiles
EXECUTE master.dbo.xp_cmdshell 'dir /b "C:\SQL Scripts\*.sql"'
GO
DECLARE cFiles CURSOR LOCAL FOR
SELECT DISTINCT [SQLFileName]
FROM ##SQLFiles
WHERE [SQLFileName] IS NOT NULL AND
[SQLFileName] != 'NULL'
ORDER BY [SQLFileName]
DECLARE @vFileName VARCHAR(200)
DECLARE @vSQLStmt VARCHAR(4000)
OPEN cFiles
FETCH NEXT FROM cFiles INTO @vFileName
WHILE @@FETCH_STATUS = 0
BEGIN
-- The following SET command must be on a single line or else an error will be generated.
-- It is split in this script for readability purposes.
SET @vSQLStmt = 'master.dbo.xp_cmdshell ''osql -S Server Name -U User Name -P Password
-d Database Name -i "C:\SQL Scripts\' + @vFileName + '"'''
EXECUTE (@vSQLStmt)
FETCH NEXT FROM cFiles INTO @vFileName
END
CLOSE cFiles
DEALLOCATE cFiles
GO
DROP TABLE ##SQLFiles
GO