gpt4 book ai didi

c# - 使用 SQL Server 管理对象将存储过程从一个 SQL Server 2008 复制到另一个

转载 作者:行者123 更新时间:2023-11-30 22:40:27 25 4
gpt4 key购买 nike

我在 C# 应用程序中使用 SQL Server 管理对象库。我需要将存储过程从源服务器复制到另一台机器上的目标服务器。我可以从源服务器取回 StoredProcedure 对象并在调试器 (transferProc) 中查看该对象。

如果我尝试将 proc (transferProc) 添加到新的服务器存储过程对象:

tdb.StoredProcedures.Add(transferProc);

当我这样做时,我收到一条错误消息:

Message "Parent property of object [dbo].[aStoredProc] does not match the collection's parent to which it is added."

如果我尝试更改父数据库并将其设置为目标数据库,我会得到一个不同的错误:

Message "SetParent failed for StoredProcedure 'dbo.aStoredProc'. "

InnerException {"Cannot perform the operation on this object, because the object is a member of a collection."}

如何将 db.StoredProcedure 对象复制到新服务器上的 tdb.StoredProcedure?

    using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Server;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer;

string srcDB = "foo";
string destDB = "bar";
string proc = "aStoredProc";

__DevSqlConnection = new SqlConnection(__DevSqlConnectionString);
__DevSqlConnection.Open();

__TestingSqlConnection = new SqlConnection(__TestingSqlConnectionString);
__TestingSqlConnection.Open();

//SMO Server object setup with SQLConnection.
Server devServer = new Server(new ServerConnection(__DevSqlConnection));
//Set Database
Database db = devServer.Databases[srcDB];

//SMO For the Receiving Server
Server testServer = new Server(new ServerConnection( __TestingSqlConnection ));
//Set Database
Database tdb = testServer.Databases[destDB];

//Set the proc we wish to Script
StoredProcedure transferProc = db.StoredProcedures[proc];

//Change the parent
transferProc.Parent = tdb;

tdb.StoredProcedures.Add(transferProc);

最佳答案

我发现如果您创建一个新的存储过程实例并以目标数据库为父级并设置过程名称和模式然后设置 TextBody 和 TextHeader 然后调用创建方法它会将存储过程从一个数据库复制到另一个。

StoredProcedure procNew = new StoredProcedure(dbProd, procDEV.Name, procDEV.Schema);
procNew.TextBody = procDEV.TextBody;
procNew.TextHeader = procDEV.TextHeader;
procNew.Create();

关于c# - 使用 SQL Server 管理对象将存储过程从一个 SQL Server 2008 复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com