--exec sp_helpserver 可以以存储过程形式执行以下:
--1.1 创建登录信息(或叫创建链接服务器登录名映射)(只需选择一种方式)
--1.1.1 以windows认证的方式登录
/*例如:EXEC sp_addlinkedserver 'TonyLink','','SQLOLEDB','192.168.58.208' */
EXEC sp_addlinkedserver 'DB1','','SQLOLEDB','0.0.0.0' --有自定义实例名还要加上"/实例名"
--1.1.2 以SQL认证的方式登录
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink' 或 EXEC sp_addlinkedsrvlogin 'TonyLink','true' */
/*例如:EXEC sp_addlinkedsrvlogin 'TonyLink','false',null,'sa','123' */
EXEC sp_addlinkedsrvlogin 'DB1','false',NULL,'sa','123'
--1.1.3 执行SQL或者存储过程
/*更新菜单按钮*/
INSERT INTO DB1.SUP2.dbo.sys_MenuButton ( Alias, Name, BtnName, BtnText)
SELECT A.Alias,A.Name,A.BtnName,A.BtnText
FROM SUP.dbo.sys_MenuButton AS A
/*查询所有用户角色id*/
DECLARE @RoleId INT
DECLARE @TEMP TABLE (RoleId INT)
INSERT INTO @TEMP
SELECT u.RoleId FROM DB1.SUP2.dbo.userBase u GROUP BY u.RoleId
/*循环更新所有角色id新增的菜单按钮权限*/
WHILE @@ROWCOUNT > 0
BEGIN
PRINT 'begin ---'
IF EXISTS (SELECT TOP 1 RoleId FROM @TEMP )
BEGIN
SELECT TOP 1 @RoleId=RoleId FROM @TEMP
PRINT 'exec count ---'
DECLARE @Count INT
SELECT @Count = COUNT(*)
FROM DB1.SUP2.dbo.sys_MenuButton mb
PRINT @Count
PRINT @@ROWCOUNT
DELETE FROM @TEMP WHERE RoleId=@RoleId
END
END;
--1.1.4 删除声明的映射和远程服务器链接
Exec sp_droplinkedsrvlogin DB1,Null --删除映射(断开与链接服务器上远程登录之间的映射)
Exec sp_dropserver DB1 --删除远程服务器链接