我有一個添加了 .Net CLR 程式集的資料庫。
當我通過選擇該特定資料庫執行以下查詢時,我會在結果中獲得程式集。
SELECT * FROM sys.assembly_files
但是,當我通過選擇任何其他資料庫(如 master)執行上述相同的查詢時,我沒有在結果中獲得程式集。
有沒有辦法通過選擇主資料庫并在具有程式集的查詢中傳遞另一個資料庫名稱來獲得程式集的結果?
uj5u.com熱心網友回復:
你用
SELECT <cols> FROM database_name.sys.assembly_files;
動態地(或在回圈中,或其他)執行此操作:
DECLARE @dbname sysname,
@exec nvarchar(1000);
SET @dbname = N'database_name';
SET @exec = QUOTENAME(@dbname) N'.sys.sp_executesql';
EXEC @exec N'SELECT DB_NAME(), <cols> FROM sys.assembly_files;';
手機輸入的,如有錯誤請見諒。
uj5u.com熱心網友回復:
根據您要執行的操作,這里有一些 powershell,它將獲取所有用戶資料庫中所有(非系統)程式集的所有檔案的詳細資訊:
$s = Connect-DbaInstance -SqlInstance .;
foreach ($db in $s.Databases) {
foreach ($a in $db.Assemblies | where IsSystemObject -eq $false) {
$a.SqlAssemblyFiles;
}
}
我正在使用Connect-DbaInstancefrom dbatools來獲取 SMO 服務器物件,但是歡迎您按照自己的意愿進行操作。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/447898.html
