65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 SMO 添加/删除链接服务器

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (5投票s)

2006年1月31日

1分钟阅读

viewsIcon

34094

使用 SQL Server 2005 SMO 添加/删除链接服务器

引言

我之前使用 SQLDMO for SQL 2000 获取基本信息。但是使用 SQL Server 2005 时,我们无法使用 SQLDMO。我需要这个功能用于我的项目,并且我们正在迁移到 SQL Server 2005。我在 Google 上搜索了使用 Microsoft 的 SMO(服务器管理对象)的如何添加链接服务器。这是 SQLDMO 的下一代产品。我找不到任何关于添加、删除或加载链接服务器的示例,所以我做了一些研究,Google 和 MSDN 搜索... 最后我成功了,并认为其他人也可能在寻找相同的东西。希望这能帮助他们。

以下代码可以为 SQL 2000 和 SQL 2005 添加、删除和加载链接服务器。

您需要添加对 Microsoft.sqlServer.ConnectionInfo、Microsoft.SqlServer.SMO 的引用 

public bool AddLinkServer(string SourceServer, string DestinationServer,string UID,string PWD)

{

try

{

LinkedServer DestSrv;

ServerConnection SrvConn = new ServerConnection();


SrvConn.ServerInstance = SourceServer;

if ((UID == "") && (PWD == ""))

{

SrvConn.LoginSecure = true;

}

else

{

SrvConn.LoginSecure = false;

SrvConn.Login = UID;

SrvConn.Password = PWD;

}

Server SQLServer = new Server(SrvConn);

DestSrv = new LinkedServer(SQLServer, DestinationServer);

// 添加用于链接的远程用户/密码。

LinkedServerLogin LnkLogin = new LinkedServerLogin(DestSrv, UID);

if (!SrvConn.LoginSecure)

{

LnkLogin.RemoteUser = UID;

LnkLogin.SetRemotePassword(PWD);

LnkLogin.Create();

}

DestSrv.Create();

SrvConn.Disconnect();

return true;

}

catch

{

return false;

}


}

// 删除链接服务器...

public bool DropLinkServer(string SourceServer,string DropLinkServerName)

{

try

{

ServerConnection SrvConn = new ServerConnection();

SrvConn.ServerInstance = SourceServer;

SrvConn.LoginSecure = true;

Server SQLServer = new Server(SrvConn);

LinkedServerCollection LnkServerList = SQLServer.LinkedServers;

foreach (LinkedServer Lnk in LnkServerList)

{

if (Lnk.Name == DropLinkServerName)

{

Lnk.Drop(true);

break;

}

}

SrvConn.Disconnect();

return true;

}

catch

{

return false;

}

}

// 加载所有链接服务器...

public bool LoadLinkServers(string SourceServer, ArrayList LinkServerList)

{

try

{

ServerConnection SrvConn = new ServerConnection();

SrvConn.ServerInstance = SourceServer;

SrvConn.LoginSecure = true;

Server SQLServer = new Server(SrvConn);

LinkedServerCollection LnkSrvList = SQLServer.LinkedServers;


foreach (LinkedServer Lnk in LnkSrvList)

{

LinkServerList.Add(Lnk.Name);

}

SrvConn.Disconnect();

return true;

}

catch

{

return false;

}

}

© . All rights reserved.