SQL Server 2016 引入了STRING_SPLIT,它非常快,是人们在 2016 年之前推出的任何自制实现的绝佳替代品。
不幸的是,STRING_SPLIT 只支持单字符分隔符,这并不总是足够的。有谁知道允许在分隔符中使用多个字符的良好实现?
我制作了一个存储过程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