如何使用SMO将数据库转移到新的模式
本文关键字:模式 转移 数据库 何使用 SMO | 更新日期: 2023-09-27 18:26:48
我想使用Microsoft.SqlServer.Management.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_ser1没有dbo的权限(我不希望它拥有)。
如何将其传输到目标数据库上的新架构?
我必须为Transfer
对象指定Options.SchemaQualify = false
(它指定脚本中是否必须使用架构)。
然后使用新数据库中的用户,它将在新模式中创建。