0
我正在使用下面的代码将db上下文切换为主并创建过程并设置启动脚本。在运行时切换数据库上下文
BEGIN TRY
DECLARE @dbName NVARCHAR(100)
SET @dbName = DB_NAME()
USE MASTER
IF NOT EXISTS (
SELECT name
FROM sys.objects
WHERE object_id = OBJECT_ID('spSetTrustWorthyOn')
)
EXEC (
'CREATE PROCEDURE spSetTrustWorthyOn
AS
BEGIN
ALTER DATABASE [' + @dbName + '] SET TRUSTWORTHY ON
END'
)
EXECUTE sp_procoption 'spSetTrustWorthyOn'
,'startup'
,'ON'
END TRY
BEGIN CATCH
END CATCH
GO
现在问题是当我想切换回现有的数据库。我找不到任何方式回到我原来的数据库。
我也不能硬编码数据库,因为这是动态查询,我们有多个数据库。
任何帮助将不胜感激。
感谢
感谢您的回复,但商店proc应该是主数据库的一部分。 –
你试过这个脚本吗?由于“EXECUTE master..sp_executesql”语句中的显式数据库限定,它将在master中创建存储过程。执行后数据库上下文将保留在用户数据库中。 –
很酷,我没有看到'EXECUTE master..sp_executesql'这一行。感谢TON,因为我一直在努力完成这项工作。我使用了sp_execute sql这个想法,但我很笨,以至于我可以这样调用。 –