我试图复制所有内容(数据、索引、触发器、存储过程)。在 C# 中从一个数据库到另一个数据库。
这是我的代码:
SqlConnection connection = new SqlConnection(ConnectionString);
Server myServer = new Server(new ServerConnection(connection));
Database db = myServer.Databases[this._myDB];
if (myServer.Databases[this._newDB] != null)
myServer.Databases[this._newDB].Drop();
Database newdb = new Database(myServer, this._newDB);
newdb.Create();
Transfer transfer = new Transfer(db);
transfer.CopyAllSchemas = false;
transfer.CopyAllStoredProcedures = true;
transfer.CopyAllTables = true;
transfer.CopyAllDatabaseTriggers = true;
transfer.CopyAllObjects = true;
transfer.CopyAllUsers = true;
transfer.Options.WithDependencies = true;
transfer.DestinationDatabase = newdb.Name;
transfer.DestinationServer = myServer.Name;
transfer.DestinationLoginSecure = false;
transfer.DestinationLogin = user;
transfer.DestinationPassword = pwd;
transfer.CopySchema = false;
transfer.CopyData = true;
transfer.Options.DriAll = true;
transfer.Options.Triggers = true;
transfer.Options.WithDependencies = true;
transfer.Options.ContinueScriptingOnError = true;
transfer.TransferData();
我收到以下错误:
errorCode=-1071636471 描述=SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。
OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“用户‘DOMAIN\user’登录失败。”。
OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“无法打开登录请求的数据库“myDB(替换名称,但它是正确的)”。登录失败。”。
helpFile= helpContext=0 idofInterfaceWithError={5BC870EB-BBA5-4B9D-A6E3-58C6D0051F14}
我最接近通过解决方法来完成它的方法是:
script = transfer.ScriptTransfer();
foreach (string s in script)
{
//run a sqlcommand for s
}
但这并没有获取到数据。
我已经为用户授予了我能想到的 SQL Server 和数据库本身的所有权限。
为时已晚,但它可以帮助其他人
我遇到了同样的问题,这是由于第一行,演员阵容SqlConnection
。它激活混合身份验证[这就是为什么您收到错误,因为“域\用户”的登录错误]
我选择使用以下命令初始化一个简单的连接SqlConnectionStringBuilder
:
var connectionString = ((EntityConnection)base.ReferentielContext.Connection).StoreConnection.ConnectionString;
var builder = new SqlConnectionStringBuilder(connectionString);
var srvConn = new ServerConnection
{
ServerInstance = builder.DataSource,
LoginSecure = false,// set to true for Windows Authentication
Login = builder.UserID,
Password = builder.Password
};
var server = new Microsoft.SqlServer.Management.Smo.Server(srvConn);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)