syn*_*tic 2 sql t-sql sql-server stored-procedures
假设我有许多具有完全相同模式的sql server数据库.有没有可以编写存储过程并申请所有数据库的地方?如果我为每个数据库创建存储过程,在需要时,我必须全部更新它们.
如果为存储过程添加前缀master,则可以在当前数据库上下文中创建存储过程.这是一个例子:sp
USE master
GO
CREATE DATABASE Test1 --for demo purposes
GO
CREATE PROCEDURE dbo.sp_DoStuff
AS
SET NOCOUNT ON
SELECT DB_NAME()
GO
USE Test1
GO
EXEC dbo.sp_DoStuff
GO
USE msdb
GO
EXEC dbo.sp_DoStuff
GO
USE master
GO
DROP DATABASE Test1
DROP PROCEDURE dbo.sp_DoStuff
GO
Run Code Online (Sandbox Code Playgroud)
这当然是你通常不创建用户存储过程的原因sp... 启动...引擎尝试解析master中的名称
您可以依赖延迟名称解析来不为master中不存在的表引发错误