2
我想使用Microsoft.SqlServer.Management.Smo
將數據庫傳輸到新的數據庫,但使用新的模式。如何使用SMO將數據庫傳輸到新模式?
這裏就是我此刻做(我打得四處選項來得到我想要的行爲,但沒有任何的運氣):
var source = new Server(GetServerConnection("sa"));
var destination = new Server(GetServerConnection("schema_user1"));
source.ConnectionContext.Connect();
destination.ConnectionContext.Connect();
var sourceDatabase = source.Databases["support"];
var destinationDatabase = destination.Databases["schema_test"];
var transfer = new Transfer(sourceDatabase)
{
CopyAllObjects = false,
CopyAllUserDefinedDataTypes = true,
CopyAllTables = true,
CopyData = true,
CopyAllStoredProcedures = true,
PreserveDbo = false,
PreserveLogins = false,
DestinationServer = destination.Name,
DestinationDatabase = destinationDatabase.Name,
DestinationLogin = destination.ConnectionContext.Login,
DestinationPassword = destination.ConnectionContext.Password,
DestinationLoginSecure = false,
Options = {ScriptSchema = false}
};
transfer.TransferData();
我收到以下錯誤:
The specified schema name "dbo" either does not exist or you do not have permission to use it.
這是因爲schema_user1沒有權限dbo(我不希望它具有)。
如何將其傳輸到目標數據庫上的新模式?
您有兩種選擇:爲schema_user1提供所需的權限,或者創建一個新用戶來運行該工具,併爲* *用戶提供所需的權限。你現在要求的就是說:「我想讓這個人有能力通過這個鎖着的門,但不想給他們鑰匙。」 – 2014-10-17 14:12:56
即使我授予schema_user1權限(或者使用具有所有權限的用戶),數據庫也會轉移到「dbo」,我想知道是否可以將其轉移到新的模式。 – 2014-10-20 05:52:47
當然。在這種情況下,指定希望模式作爲新用戶的默認模式。 – 2014-10-20 12:09:28