Sql-Server

如何在“sp_addextendedproperty”上使用數據庫參數?

  • May 2, 2016

我找到了‘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語句的一部分,而無需創建單獨的包裝腳本?

語法 forexec接受 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'; 

引用自:https://dba.stackexchange.com/questions/136135