Sql-Server
如何在“sp_addextendedproperty”上使用數據庫參數?
我找到了‘sp_addextendedproperty’的 MSDN 定義和程式碼範例。在該頁面的範例 A 中,我看到瞭如何將擴展屬性添加到數據庫的範例。
USE AdventureWorks2012; GO --Add a caption to the AdventureWorks2012 Database object itself. EXEC sp_addextendedproperty @name = N'Caption', @value = 'AdventureWorks2012 Sample OLTP Database';
顯而易見的是,您首先必須聲明一個數據庫上下文,並且儲存過程僅在該數據庫上下文中執行。
sp_addextendedproperty
如果我想添加一個數據庫作為參數,我想我可以創建一個單獨的腳本,在執行儲存過程之前環繞並設置數據庫上下文。例如
-- execute wrapper stored procedure EXEC WrapperStoredProcedure @DatabaseName = N'Database name', @name = N'Extended property name', @value = N'Extended property value'; GO
在這種情況下
WrapperStoredProcedure
可能使用動態 SQL 來設置數據庫上下文並執行sp_addextendedproperty
。我是否遺漏了一種明顯的技術或約定,允許我將數據庫聲明為
EXEC sp_addextendedproperty
語句的一部分,而無需創建單獨的包裝腳本?
語法 for
exec
接受 a@module_name_var
允許模組名稱位於變數中。這確實接受三個部分名稱,所以下面的伎倆。
DECLARE @DbName SYSNAME = 'AdventureWorks2012'; DECLARE @module_name_var NVARCHAR(500) = QUOTENAME(@DbName) + '.sys.sp_addextendedproperty'; EXEC @module_name_var @name = N'Caption', @value = 'AdventureWorks2012 Sample OLTP Database';
或者剛剛再次審查了這個問題,你可能只是需要這個。
EXEC AdventureWorks2012.sys.sp_addextendedproperty @name = N'Caption', @value = 'AdventureWorks2012 Sample OLTP Database';