1
我遇到了用c#編寫的我的clr存儲過程的大量問題。我已經成功安裝了程序集,但是當我調用存儲過程時,出現以下錯誤: -SQLCLR和Microsoft.SqlServer.Management.Smo.Server..ctor()
Msg 6522, Level 16, State 1, Procedure RestoreDatabaseClr, Line 0
A .NET Framework error occurred during execution of user-defined routine or aggregate "RestoreDatabaseClr":
System.Exception: This functionality is disabled in the SQLCLR. It is recommended that you execute from your client application.
System.Exception:
at Microsoft.SqlServer.Management.Common.ConnectionManager..ctor()
at Microsoft.SqlServer.Management.Common.ServerConnection..ctor()
at Microsoft.SqlServer.Management.Smo.ExecutionManager..ctor(String name)
at Microsoft.SqlServer.Management.Smo.Server..ctor()
at DBRestoreClr.StoredProcedures.RestoreDatabaseClr(String backupFile, String dbName, String dataFiles, String logFiles)
。
這是C#代碼我試圖在存儲過程與執行: -
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Server;
namespace DBRestoreClr
{
public partial class StoredProcedures
{
[SqlProcedure()]
public static int RestoreDatabaseClr(string backupFile, string dbName, string dataFiles, string logFiles)
{
var sqlServer = new Server();
}
}
}
我使用的是下面
EXEC @ReturnValue RestoreDatabaseClr 'C:\Workspace\DEV\DBRestoreDatabase\tests\Clr\restore.bak',
'restore',
'C:\2008\MSSQL10.MSSQLSERVER\MSSQL\DATA\restore',
'C:\2008\MSSQL10.MSSQLSERVER\MSSQL\DATA\restore\logs';
任何一個有爲什麼它不工作的任何想法執行?
感謝
安德魯
爲什麼要爲「RESTORE DATABASE」T-SQL命令添加非標準替換? – 2012-08-03 12:35:58
,因爲我們的房地產有大約100分貝的文件(公司日誌),我們需要恢復開發的場合,所以我想寫一個clr循環通過備份中的這些數據庫文件並將它們移到恢復的新位置。而smo課程提供者爲此提供了完美的libls,因此clr。我現在發現了一種不同的方法 - 我堅持使用clr,但刪除了smo類,並使用內聯sql,即使用SqlConnection和SqlCommand和SqlDataAdapters \ DataSets進行「RESTORE FILESIONLY」,以便通過文件循環 - 完美實現, – 2012-08-03 13:21:17
i dynmically生成恢復語句並將其與連接的sql字符串中的「WITH MOVE」一起傳遞給sql。 – 2012-08-03 13:21:24