实现Sql server数据库的远程连接访问

在同一网络环境下,或者在可以访问的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_string 和 catalog

[ @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 或传递给 IDataInitialize 或设置为 DBPROP_INIT_PROVIDERSTRING 属性,以初始化 OLE DB 访问接口。

当针对 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,而忽略 rmtuser 和 rmtpassword 参数。 FALSE 指定 rmtuser 和 rmtpassword 参数用于连接到指定 locallogin 的 rmtsrvname。 如果 rmtuser 和 rmtpassword 也设置为 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_name。 option_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‘

有需要的童鞋可以参考一下,祝君武运昌隆。

时间: 2024-08-10 21:22:01

实现Sql server数据库的远程连接访问的相关文章

如何开启SQL Server2012数据库的远程连接

SQL Server默认是不允许远程连接的,如果想要在本地用连接远程服务器上的SQLServer2012数据库,需要确认以下环节:1)如果是工作组环境,则需要使用SQL Server身份验证方式2)如果是Windows域环境,则可使用Windows身份验证或者SQL Server身份验证 现在以域环境下SQL Server身份验证方式为例: 1)启用SQLServer身份验证模式进行登录(需重启实例): 2)建立可用的SQL Server服务器登录名 3)允许远程连接到服务器实例 4)设置服务器

SQL Server 2005无法远程连接的解决方法

以前一直连接本地的数据库,连接SQL Server 2005是小菜的... 做项目也是老师搭好了服务器端,打上IP去访问就行...也不用考虑太多. 今天自己在公司搭SQL Server 2005服务器,客户端去访问问题就来了... 连接失败,SQL Server 2005不支持远程... 想想应该不会,于是想到老师以前说的,服务器端要做配置...哇哈哈!~~果然... 方法如下:  一.为 SQL Server 2005 启用远程连接 1. 单击"开始",依次选择"程序&qu

SQL Server 2005无法远程连接的解决方法 (转帖)

方法如下:  一.为 SQL Server 2005 启用远程连接1. 单击"开始",依次选择"程序"."Microsoft SQL Server 2005"."配置工具",然后单击"SQL Server 外围应用配置器". 2. 在"SQL Server 外围应用配置器"页上,单击"服务和连接的外围应用配置器". 3. 在"服务和连接的外围应用配置器&qu

SQL Server 2008 允许远程连接的配置

如果无法通过IP地址远程连接你的SQL Server 2008服务器,可以参考下面的内容进行设置. 在进行下述设置之前,应该确保你的网络已经安装设置完毕,服务器已经正常连接到网络中. 1.单击Windows的"开始",依次选择"所有程序"."Microsoft SQL Server 2008",然后单击"SQL Server Management Studio",在对象资源管理器中,右击你的服务器,从快捷菜单中执行"

MySQL、Oracle、Sql Server数据库JDBC的连接方式

MySQL: 先添加MySQL的jar包 String url="jdbc:mysql://localhost:3306/数据库名";       //数据库地址 String name="root";       //数据库用户名 String password="123456";       //数据库用户密码 Class.forName("com.mysql.jdbc.Driver") ;      //加载MySQL驱

SQL Server 2012允许远程连接(Windows Server 2016)

开始屏幕(我使用的是全屏模式) -> 打开 SQL Server配置管理器 2. 设置防火墙的入站规则 打开控制面板 使用Navicat Premium连接SQL Server  原文地址:https://www.cnblogs.com/gme5/p/11765524.html

SQL server 2000建立远程连接(局域网)

服务器安装了SQL server2000  后不允许远程访问找了半天的问题 最终还是解决了 总结一下 1.做事不要怕麻烦 有些问题也许改下配置就回完成:2.看到网上复杂的不要怕麻烦 也就就这个麻烦的能解决这个问题 先说如何解决的. 1 .先查看一下服务的防火墙是否关闭 2.查看一下Sql server 的版本 登陆查询分析器 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁. 我的就是这个地方的问题 下载sp3 然后点击安装 这个软件有问题 点击

关闭SQL Server 数据库所有使用连接

使用存储过程终止:在查询分析器下创建终止数据库所有接连的存储过程,通过调用该存储过程可以关闭所有使用该数据库的连接操作.--创建终止使用数据库下所有进程的存储过程,参数为数据库名称use  mastergocreate  proc  KillSpByDbName(@dbname  varchar(20)) as begin declare  @sql  nvarchar(500),@temp varchar(1000)declare  @spid  int set  @sql='declare 

让Sql Server 2008 可以远程连接的方法

1.先开防火墙TCP:1433 2.设置外围端口为:1433 注意一定不要忘记“启用”和IPALL的端口设置 3.重启SQL完成 如果要查看1433端口有没有启用并被监听,只要在cmd里使用netstat -na就可以查看了