相关疑难解决方法(0)

如何在sqlcmd中输出超过4000个字符

我制作了一个存储过程restoredatabase,它返回代码来恢复数据库。输出脚本如下所示:

restore database [DB]  from disk='F:\FULL1.bak' with norecovery
restore database [DB]  from disk='F:\DIFF1.bak' with norecovery
restore log [DB]  from disk='F:\log1.bak' with norecovery
restore log [DB]  from disk='F:\log2.bak' with norecovery
...
restore log [DB]  from disk='F:\logN.bak' with norecovery
restore database [DB] with recovery
Run Code Online (Sandbox Code Playgroud)

在整个 SP 中,这些行被添加到一个参数@sql varchar(max)中,该参数最后以 打印print(@sql),如果用户指定了正确的标志,则以exec(@sql). 两者都完美地工作。但是,当像这样使用 sqlcmd 调用 SP 时:

set restoresql=exec restoredatabase @DB='Databasename', @Execute='y'
sqlcmd -h-1 -S SRV\T2 -U sa -P sa -d master -Q "%restoresql%" -o output.txt
Run Code Online (Sandbox Code Playgroud)

输出文件 …

sql-server stored-procedures sql-server-2008-r2 recovery sqlcmd

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

获取长请求的全文

如何从以下请求中获取请求的全文:

SELECT t.[text]
FROM sys.dm_exec_requests AS r
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) AS t
Run Code Online (Sandbox Code Playgroud)

在这里,对于足够长的请求,请求文本会中断。我使用 SSMS 17 和 18 版本。

sql-server t-sql

5
推荐指数
1
解决办法
567
查看次数