Sql server数据库如何远程连接
Sql server数据库如何远程连接,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
在同一网络环境下,或者在可以访问的IP地址下,我们利用SQL数据库实现远程连接访问可以使用如下方法:
通过调用master.sys.sp_addlinkedserver创建访问连接
EXECmaster.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_name、data_source、location、provider_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 实例的名称
成功创建访问链接后就需要登陆远程服务器数据库
execmaster.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。
接下来就要为远程服务器和链接服务器设置服务器选项
EXECmaster.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。
通过上述步骤就可以实现远程数据库的访问了
具体例子如下:
EXECmaster.sys.sp_addlinkedserver@server='HQDB2',@srvproduct='',@provider='SQLOLEDB',@datasrc='10.82.21.69'EXECmaster.sys.sp_addlinkedsrvlogin@rmtsrvname='HQDB2',@useself=N'false',@locallogin=NULL,@rmtuser='btscn',@rmtpassword='btscn'EXECmaster.sys.sp_serveroption@server='HQDB2',@optname='RPCout',@optvalue=N'true'EXECUTE[HQDB2].[BTSHQ9903].[dbo].[stp_Generate_RentalReport]@GenerateDate
可以执行select * from sys.servers查询当前的远程访问链接是否存在
当远程连接使用完后需要释放
EXECmaster.sys.sp_dropserver@server=NULL,--sysname@droplogins=''--char(10)
[@server =]'server'
要删除的服务器。server的数据类型为sysname,无默认值。server必须存在。
[@droplogins =]'droplogins'| NULL
指示如果指定了droplogins,那么对于server,还必须删除相关的远程服务器和链接服务器登录名。@droplogins的数据类型为char(10),默认值为 NULL。
实例:
EXECmaster.sys.sp_dropserver@server='HQDB2',@droplogins='droplogins'
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。