设为首页 收藏本站
查看: 716|回复: 0

[经验分享] 实现Sql server数据库的远程连接访问

[复制链接]

尚未签到

发表于 2018-10-21 12:30:19 | 显示全部楼层 |阅读模式
  在同一网络环境下,或者在可以访问的IP地址下,我们利用SQL数据库实现远程连接访问可以使用如下方法:
  通过调用master.sys.sp_addlinkedserver创建访问连接
EXEC master.sys.sp_addlinkedserver @server = NULL, -- sysname  
    @srvproduct = N'', -- nvarchar(128)
  
    @provider = N'', -- nvarchar(128)
  
    @datasrc = N'', -- nvarchar(4000)
  
    @location = N'', -- nvarchar(4000)
  
    @provstr = N'', -- nvarchar(4000)
  
    @catalog = NULL -- sysname
  [ @server= ] 'server'
  要创建的链接服务器的名称。 server 的数据类型为 sysname,无默认值。
  [ @srvproduct= ] 'product_name'
  要添加为链接服务器的 OLE DB 数据源的产品名称。 product_name 的数据类型为 nvarchar(128),默认值为 NULL。 如果为 SQL Server,则不必指定 provider_namedata_sourcelocationprovider_stringcatalog
  [ @provider= ] 'provider_name'
  与此数据源对应的 OLE DB 访问接口的唯一编程标识符 (PROGID)。 对于当前计算机中安装的指定 OLE DB 访问接口,provider_name 必须唯一。 provider_name 的数据类型为 nvarchar(128),默认值为 NULL;但如果忽略 provider_name,则使用 SQLNCLI。 (使用 SQLNCLI 并且 SQL Server 将重定向到 SQL Server Native Client OLE DB 访问接口的最新版本。)OLE DB 访问接口应以指定的 PROGID 在注册表中注册。
  [ @datasrc= ] 'data_source'
  由 OLE DB 访问接口解释的数据源的名称。 data_source 的数据类型为 nvarchar(4000)。 data_source 作为 DBPROP_INIT_DATASOURCE 属性传递以初始化 OLE DB 访问接口。
  [ @location= ] 'location'
  由 OLE DB 访问接口解释的数据库的位置。 location 的数据类型为 nvarchar(4000),默认值为 NULL。 location 作为 DBPROP_INIT_LOCATION 属性传递以初始化 OLE DB 访问接口。
  [ @provstr= ] 'provider_string'

  OLE DB 访问接口特定的连接字符串,它可标识唯一的数据源。 provider_string 的数据类型为 nvarchar(4000),默认值为 NULL。 provstr 或传递给>  当针对 SQL Server Native Client OLE DB 访问接口创建链接服务器时,可以使用 SERVER 关键字来指定实例,即使用 SERVER=servername\instancename 指定特定 SQL Server 实例。 servername 是运行 SQL Server 的计算机的名称,instancename 是用户要连接的特定 SQL Server 实例的名称
  成功创建访问链接后就需要登陆远程服务器数据库
exec master.sys.sp_addlinkedsrvlogin @rmtsrvname = NULL, -- sysname  
    @useself = '', -- varchar(8)
  
    @locallogin = NULL, -- sysname
  
    @rmtuser = NULL, -- sysname
  
    @rmtpassword = NULL -- sysname
  [ @rmtsrvname = ] 'rmtsrvname'
  应用登录映射的链接服务器的名称。 rmtsrvname 的数据类型为 sysname,无默认值。
  [ @useself = ] 'TRUE' | 'FALSE' | 'NULL'
  确定是否通过模拟本地登录名或显式提交登录名和密码来连接到 rmtsrvname。 数据类型为 varchar(8),默认值为 TRUE。
  值为 TRUE 指定登录名使用自己的凭据连接到 rmtsrvname,而忽略 rmtuserrmtpassword 参数。 FALSE 指定 rmtuserrmtpassword 参数用于连接到指定 localloginrmtsrvname。 如果 rmtuserrmtpassword 也设置为 NULL,则不使用登录名或密码来连接链接服务器。
  [ @locallogin = ] 'locallogin'
  本地服务器上的登录。 locallogin 的数据类型为 sysname,默认值为 NULL。 NULL 指定此项应用于连接到 rmtsrvname 的所有本地登录。 如果不为 NULL,则 locallogin 可以是 SQL Server 登录或 Windows 登录。 对于 Windows 登录来说,必须以直接的方式或通过已被授权访问的 Windows 组成员身份授予其访问 SQL Server 的权限。
  [ @rmtuser = ] 'rmtuser'
  当 @useself 为 FALSE 时,用于连接到 rmtsrvname 的远程登录名。 当远程服务器是不使用 Windows 身份验证的 SQL Server 实例时,rmtuser是一个 SQL Server 登录名。 rmtuser 的数据类型为 sysname,默认值为 NULL。
  [ @rmtpassword = ] 'rmtpassword'
  与 rmtuser 关联的密码。 rmtpassword 的数据类型为 sysname,默认值为 NULL。
  接下来就要为远程服务器和链接服务器设置服务器选项
    EXEC master.sys.sp_serveroption @server = NULL, -- sysname  
        @optname = '', -- varchar(35)
  
        @optvalue = N'' -- nvarchar(128)
  [ @server = ] 'server'
  要为其设置选项的服务器的名称。 server 的数据类型为 sysname,无默认值。
  [ @optname = ] 'option_name'
  为指定的服务器设置的选项。 option_name 的数据类型为 varchar(35),无默认值。 option_name 可以是下列任意值。
  [ @optvalue =] 'option_value'
  指定应启用(TRUE 或 on)还是禁用(FALSE 或 off)option_nameoption_value 的数据类型为 varchar(10),无默认值。
  option_value 可以是用于 connect timeout 和 query timeout 选项的非负整数。 对于 collation name 选项,option_value 可以是排序规则名称或 NULL。
  通过上述步骤就可以实现远程数据库的访问了
  具体例子如下:
EXEC master.sys.sp_addlinkedserver  
@server = 'HQDB2',
  
@srvproduct = '',
  
@provider = 'SQLOLEDB',
  
@datasrc = '10.82.21.69'
  
EXEC master.sys.sp_addlinkedsrvlogin
  
    @rmtsrvname = 'HQDB2',
  
    @useself = N'false',
  
    @locallogin = NULL,
  
    @rmtuser = 'btscn',
  
    @rmtpassword = 'btscn'
  
EXEC master.sys.sp_serveroption
  
    @server = 'HQDB2',
  
    @optname = 'RPC out',
  
    @optvalue = N'true'
  
EXECUTE [HQDB2].[BTSHQ9903].[dbo].[stp_Generate_RentalReport]
  
   @GenerateDate
  可以执行select * from sys.servers查询当前的远程访问链接是否存在
  当远程连接使用完后需要释放
EXEC master.sys.sp_dropserver @server = NULL, -- sysname  
    @droplogins = '' -- char(10)
  [ @server = ] 'server'
  要删除的服务器。 server 的数据类型为 sysname,无默认值。 server 必须存在。
  [ @droplogins = ] 'droplogins' | NULL
  指示如果指定了 droplogins,那么对于 server,还必须删除相关的远程服务器和链接服务器登录名。 @droplogins 的数据类型为 char(10),默认值为 NULL。
  实例:
EXEC master.sys.sp_dropserver  
    @server = 'HQDB2',
  
    @droplogins = 'droplogins'
  有需要的童鞋可以参考一下,祝君武运昌隆。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-624487-1-1.html 上篇帖子: SQL SERVER 2008升级到SP4后,服务无法启动 下篇帖子: 平台中构建业务表时报sql语法错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表