通过命令行在远程服务器上运行 SQL 脚本

8
我有一个庞大的SQL脚本,我正在尝试使用命令行运行。
我在这里找到了这些指令:https://learn.microsoft.com/en-us/sql/relational-databases/scripting/sqlcmd-run-transact-sql-script-files 它似乎说明我可以使用以下命令:
sqlcmd -S myServer\instanceName -i C:\myScript.sql

我认为这很有道理。我假设我将使用与Web.Config连接字符串相同的服务器详细信息。

问题在于,这似乎没有指定要在脚本上运行的数据库名称。

我认为这是因为假定SQL文件将具有DB名称,但我的文件太大了,无法确认这一点。

此外,我希望指定DB名称以确保安全。

有人能否建议如何做到这一点?

另外,如果有人可以建议我如何使用命令行读取文件的第一行,那就太好了。

提前致谢。


2
-d参数指定数据库名称 - https://learn.microsoft.com/zh-cn/sql/tools/sqlcmd-utility - Ctznkane525
通过运行 sqlcmd -? 命令,您可以找出 sqlcmd 的所有参数。这告诉您可以使用 -d 来指定数据库名称。因此,命令为:sqlcmd -S myServer\instanceName -i C:\myScript.sql -d MyDatabase。此命令还假定您正在使用集成安全性。 - Thom A
@Ctznkane525 这是正确答案,如果你把它写为答案,我会接受它。 - Alex
我很好奇这个文件有多大,以至于你无法在文本编辑器中打开它。如果标准记事本无法打开它,Notepad++可以更优雅地处理大型文本文件。不过,我从未尝试在服务器管理工具中打开一个大小接近那个的 .sql 文件。 - EMUEVIL
@EMUEVIL 根据我的经验,SSMS 在很早的时候就开始出现问题了。我不会相信它可以打开 100MB 或更大的文件。我肯定无法在 SSMS 中打开我拥有的 >=500MB 的文件。Notepad++ 可以打开它们,但你不能从那里执行它们。 - Thom A
2个回答

11

-d-指定数据库名称-learn.microsoft.com/en-us/sql/tools/sqlcmd-utility-Ctznkane525

sqlcmd -S myServer\instanceName -i C:\myScript.sql -d DatabaseName

5
在我的情况下,我需要使用SQL Server身份验证。
sqlcmd -d database_name -U sa -P Password  -S 192.168.1.1 -i "D:\tmp\script.sql"

我使用这些开关启动了sqlcmd。希望这可以帮助到某些人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接