如何使用powershell在sql server 2008中执行多个.sql文件?

如何使用powershell在sql server 2008中执行多个.sql文件?,sql,sql-server-2008,powershell,Sql,Sql Server 2008,Powershell,我有100多个.sql文件要在SQLServer2008R2上执行。但我不想手动执行。所以,我在谷歌上搜索了可能的解决方案,发现我可以使用powershell来执行这些脚本,但我以前从未使用过powershell。我发现下面提到的命令- Get ChildItem.“\storage Procedures\*.sql”| ForEach对象{sqlcmd-S ServerName-d DatabaseName-E-i$\ FullName} 我用我的参数替换了它- Get ChildItem“C

我有100多个.sql文件要在SQLServer2008R2上执行。但我不想手动执行。所以,我在谷歌上搜索了可能的解决方案,发现我可以使用powershell来执行这些脚本,但我以前从未使用过powershell。我发现下面提到的命令-

Get ChildItem.“\storage Procedures\*.sql”| ForEach对象{sqlcmd-S ServerName-d DatabaseName-E-i$\ FullName}

我用我的参数替换了它-

Get ChildItem“C:\tables\*.sql”| ForEach对象{sqlcmd-S 10.50.102.124-d fallhpdv1stage-E-i$\.FullName}


执行此命令后,我刷新了数据库,但无法看到新执行的表?我遗漏了什么吗?

假设您在运行脚本的计算机上安装了Management Studio:

add-pssnapin SqlServerCmdletSnapin100;
Get-ChildItem "C:\tables\*.sql" | ForEach-Object { invoke-sqlcmd -serverinstance 10.50.102.124 -database falhpdv1stage  -inputfile $_.FullName }

这还假设其他所有内容都是正确的—正确编写的查询、对数据库的适当权限、正确的服务器IP和数据库名称等。

您是否检查了其中一个命令是否有效?问题可能是SQL文件中的语法错误、计算机上的身份验证问题以及IP地址键入错误。请编写日志文件,以便了解错误。将此代码添加到行的末尾
|>>execSp.log
为什么不将它们转换为一个存储过程?使用sqlcmd只运行其中一个脚本时会发生什么?像
sqlcmd-S 10.50.102.124-d falhpdv1stage-E-i c:\tables\newTable.sql
i可以在一个环境中执行命令,但无法在其他环境中打开powershell(在此环境中使用windows身份验证,但在前一个环境中使用sql server身份验证)。您可以传递
-username
-password
参数来调用sqlcmd以使用SQL身份验证。任何当前Windows服务器都应安装并提供PowerShell。