标签: sqlcmd

SqlServer 08:查询列出实例中的所有数据库?

如何使用sqlcmd列出给定sql server 08实例的所有数据库?

sql-server sqlcmd sql-server-express

24
推荐指数
3
解决办法
6万
查看次数

如何在执行完成后立即终止sqlcmd?

我在C#中创建一个进程来执行sqlcmd /S <servername> /d <dbname> /E /i以运行创建表,视图和存储过程的sql脚本.

问题是进程在执行完成后没有终止.我想知道如何在操作完成后立即终止sqlcmd.

sqlcmd是否有任何输入参数可以指定立即终止进程,还是可以直接在C#中进行?

更新

这是我用来执行进程的C#代码.

foreach (var file in files)
{
    ////var begin = DateTime.Now;
    ////context.TrackBuildWarning(string.Format("Start exec sql file at {0}.", DateTime.Now));

    Process process = new Process();
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.StartInfo.CreateNoWindow = true;
    process.StartInfo.FileName = "sqlcmd.exe";
    process.StartInfo.Arguments = string.Format("-S {0} -d {1} -i \"{2}\" -U {3} -P {4}", sqlServerName, databaseName, file, sqlUserName, sqlPassword);
    process.StartInfo.WorkingDirectory = @"C:\";
    process.Start();
    process.WaitForExit(); // if I comment out this code it …
Run Code Online (Sandbox Code Playgroud)

c# batch-file sqlcmd

21
推荐指数
2
解决办法
1万
查看次数

如何从powershell执行sqlcmd?

我在powershell中有一个字符串,其中包含一个本机sqlcmd命令.命令本身可以在cmd.exe中成功执行.我很难在powershell中执行它们.有人可以帮忙吗?谢谢.

这是sql.sql

select @@servername
go
select @@servicename
Run Code Online (Sandbox Code Playgroud)

这是从cmd.exe执行sqlcmd命令时的结果

C:\Users\test>sqlcmd -S "(local)\instance1" -U a -P a -i "c:\temp\sql.sql"

--------------------------------------------------
thesimpsons\INSTANCE1

(1 rows affected)

--------------------------------------------------
INSTANCE1

(1 rows affected)

C:\Users\test>
Run Code Online (Sandbox Code Playgroud)

这是用于调用sqlcmd命令的powershell脚本.

$sql = @"
sqlcmd -S "(local)\instance1" -U a -P a -i "c:\temp\sql.sql"
"@

Invoke-Command $sql
Run Code Online (Sandbox Code Playgroud)

当我执行此powershell脚本时,我收到以下错误.

PS C:\TEMP> $sql = @"
sqlcmd -S "(local)\instance1" -U a -P a -i "c:\temp\sql.sql"
"@

Invoke-Command $sql
Invoke-Command : Parameter set cannot be resolved using the specified named parame
ters.
At line:5 char:15
+ Invoke-Command …
Run Code Online (Sandbox Code Playgroud)

powershell sqlcmd

20
推荐指数
3
解决办法
5万
查看次数

SQLCMD,命令行变量和脚本:setvar

运行SQLCMD.exe并为脚本变量提供命令行参数时,我希望命令行上提供的值将覆盖SQL脚本文件中定义的值.

例如

给出以下SQL脚本:

:setvar XXX "SQL script"
print '$(XXX)'
Run Code Online (Sandbox Code Playgroud)

和命令行:

sqlcmd.exe -S <Server> -d <Database> -E -b -i <Script> -v XXX="Batch script"
Run Code Online (Sandbox Code Playgroud)

我希望输出为:

批处理脚本

但输出是:

SQL脚本

这是意图,还是必须:setvar删除SQL脚本中的语句?

:setvar在脚本中提供了语句,因此我可以使用SQLCMD模式在SQL Management Studio中编辑/测试脚本,但是在我的测试和生产环境中从命令行运行脚本.

sql-server sql-server-2005 sqlcmd

18
推荐指数
3
解决办法
2万
查看次数

调用sqlcmd时如何更改端口

我有这个命令

sqlcmd.exe -E -i "C:\joe-db-scripts\joe-db-tasks.Install.sql"
Run Code Online (Sandbox Code Playgroud)

我需要添加32001的特定非标准端口.我该怎么办?我在考虑一些标志-p或类似的东西,但我不知道语法.

sql sqlcmd

17
推荐指数
2
解决办法
2万
查看次数

使用批处理文件和Sqlcmd进行错误处理

我有一个批处理文件,使用sqlcmd运行一些SELECT查询,将结果放入文本文件,并将这些文件上传到FTP服务器.这一切都按照它应该的方式工作,这就是我喜欢的工作方式.

不过,我一直想知道在发生错误时我会怎么做.假设某人更改了我正在点击的数据库的数据结构,但没有通知我.如果我运行sqlcmd SELECT语句并将结果放入文本文件中,我最终会得到一个包含错误的文本文件,然后直接进入FTP就好像没有错.(我已经测试了这个.)

我希望能够检查来自sqlcmd的错误 - 超时,错误的凭据,格式错误的查询等等,我只是不确定这是怎么做的或者"最佳实践"是什么.我总是可以尝试抓取输出文本文件并搜索我认为可能发生的错误,但由于各种原因这是有问题的.

任何人都有这方面的经验,他们想分享?

windows error-handling batch-file sqlcmd

16
推荐指数
2
解决办法
3万
查看次数

无法通过sqlcmd连接到LocalDB

我目前正在学习SQL Server,并且在使用连接到本地数据库时遇到问题sqlcmd.

当我在Powershell中键入以下内容时:

sqlcmd -S "(localdb)\mssqllocaldb"
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Sqlcmd:错误:用于SQL Server的Microsoft ODBC驱动程序13:SQL Server网络接口:系统找不到指定的文件.
Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序13:登录超时已过期.
Sqlcmd:错误:SQL Server的Microsoft ODBC驱动程序13:建立与SQL Server的连接时发生了与网络相关或特定于实例的错误.找不到服务器或无法访问服务器.检查实例名称是否正确以及SQL Server是否配置为允许远程连接.有关详细信息,请参阅SQL Server联机丛书.

如果我使用SQL Server Management Studio,我可以连接到本地数据库.如果我使用实例名称管道,我也可以连接到本地数据库.

我有一个干净安装的Windows 10 x64,Visual Studio社区和SQL Server Management Studio 2016.

database sql-server powershell sqlcmd smss

16
推荐指数
2
解决办法
9017
查看次数

Docker + mssql-server-linux:如何在构建期间启动.sql文件(来自Dockerfile)

我正在尝试使用MSSQL DB创建自己的Docker镜像以进行开发.它基于microsoft/mssql-server-linux图像.在构建期间,我想将一些.sql文件复制到容器中,然后运行这些脚本(创建数据库模式,表,插入一些数据等).我Dockerfile看起来像这样:

# use MSSQL 2017 image on Ubuntu 16.04
FROM microsoft/mssql-server-linux:2017-latest

# create directory within SQL container for database files
RUN mkdir -p /opt/mssql-scripts

# copy the database files from host to container
COPY sql/000_create_db.sql /opt/mssql-scripts

# set environment variables
ENV MSSQL_SA_PASSWORD=P@ssw0rd
ENV ACCEPT_EULA=Y

# run initial scripts
RUN /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'P@ssw0rd' -i /opt/mssql-scripts/000_create_db.sql
Run Code Online (Sandbox Code Playgroud)

000_create_db.sql在我看来,内容并不重要.

真正的问题是当我尝试Dockerfile使用命令构建它时,docker build -t demo .我总是会遇到这些错误:

Sqlcmd: Error: Microsoft ODBC …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlcmd docker dockerfile

16
推荐指数
3
解决办法
6620
查看次数

如何在SSMS中获取SQLCMD模式下文件的相对路径?

我有下面的主脚本,它创建表,并插入一些数据,然后创建存储过程.

--todo_master.sql

use master
go

:r todo_create_ddl.sql
:r todo_create_dml.sql
:r todo_create_sprocs.sql
go
Run Code Online (Sandbox Code Playgroud)

但是,即使todo_master.sql与其他三个脚本位于相同的路径中,也无法找到这三个脚本.

我收到以下错误:

A fatal scripting error occurred.
The file specified for :r command was not found.
Run Code Online (Sandbox Code Playgroud)

如果我提供如下所示的完整路径,则会按预期找到并执行这些文件.

"C:\Docs and Settings\user\My Docs\SSMS\Projects\todo_create_ddl.sql"

我可能会失踪什么?


编辑 正如杰森所建议我试过这个,但仍然得到同样的错误:

use master
go

:setvar path "C:\Documents and Settings\user\My Documents\SQL Server Management Studio\Projects"
:setvar ddl "todo_create_ddl.sql"
:setvar dml "todo_create_dml.sql"
:setvar sprocs "todo_create_sprocs.sql"

:r $(path)$(ddl)
:r $(path)$(dml)
:r $(path)$(sprocs)
go
Run Code Online (Sandbox Code Playgroud)

sql-server ssms sqlcmd

15
推荐指数
2
解决办法
3万
查看次数

在SQLCMD中访问SQL语句的返回值

我在DOS批处理文件中运行时试图获取SQL语句的值...

sqlcmd -E -S DEVSERVER -Q "SELECT  COUNT(1) as [CaseCount] FROM Cases"
Run Code Online (Sandbox Code Playgroud)

我不是在这个stackoverflow问题之后的错误级别之后,而是在我从数据库返回的实际计数之后,所以我可以做一些额外的逻辑.

sql-server dos batch-file sqlcmd

15
推荐指数
2
解决办法
3万
查看次数