这篇文章将向您展示一些有关 MS SQL Server 的脚本技巧。
1.等待
WAITFOR 语句使用两个子句之一指定:
(1) DELAY 关键字后跟完成 WAITFOR 语句之前要经过的时间量。完成 WAITFOR 语句之前的等待时间最长可达 24 小时。例如,
-- 等待十秒再执行 select 语句
等待延迟'00:00:10'
Select EmployeeID From Northwind.dbo.Employees
(2) TIME 关键字后跟要执行的时间,该时间指定 WAITFOR 语句的完成。
例如,
-- 等到晚上 10:00 对 pubs 数据库执行检查,以确保所有页面都正确分配和使用。
使用酒吧
开始
等待时间“22:00”
DBCC CHECKALLOC
结束
2. 启用 SQL 调试
-- SQL Server 使用 SP_SDIDEBUG 存储过程来调试 Transact-SQL 语句
使用大师
将 Execute on SP_SDIDEBUG 授予用户名
3. 执行动态构建的字符串
(1)执行语句
对于 EXECUTE 语句,所有参数值都必须转换为字符或 Unicode,并成为 Transact-SQL 字符串的一部分。例如,
声明@IntVariable INT
声明 @SQLString NVARCHAR(500)
/* 使用一个参数值构建并执行一个字符串。 */
设置@IntVariable = 35
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
执行(@SQLString)
/* 使用第二个参数值构建并执行字符串。 */
设置@IntVariable = 201
SET @SQLString = N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = ' +
CAST(@IntVariable AS NVARCHAR(10))
EXEC(@SQLString)
(2) SP_ExecuteSQL
建议使用 sp_executesql 而不是使用 EXECUTE 语句来执行字符串。对参数替换的支持不仅使 sp_executesql 比 EXECUTE 更通用,而且还使 sp_executesql 更高效,因为它生成的执行计划更有可能被 SQL Server 重用。
sp_executesql 支持独立于 Transact-SQL 字符串设置参数值:
DECLARE @IntVariable INT
声明 @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
/* 构建 SQL 字符串一次。 */
设置@SQLString =
N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
/* 指定一次参数格式。 */
SET @ParmDefinition = N'@level tinyint'
/* 执行第一个参数值的字符串。 */
设置@IntVariable = 35
执行 sp_executesql @SQLString、@ParmDefinition、
@level = @IntVariable
/* 使用第二个参数值执行相同的字符串。 */
设置@IntVariable = 32
执行 sp_executesql @SQLString、@ParmDefinition、
@level = @IntVariable
4. SP_HelpText
打印规则、默认值或未加密的存储过程、用户定义函数、触发器或视图的文本。
-- 此示例显示employee_insupd触发器的文本,该触发器位于pubs数据库中
使用酒吧
执行 sp_helptext 'employee_insupd'