zoukankan      html  css  js  c++  java
  • 远程连接SQL2000数据库

    远程连接SQL2000时,需要用到系统存储过程 sp_addlinkedserver和sp_addlinkedsrvlogin

    例:我要通过查询分析器连接172.20.40.208电脑上的Sea数据库,并查询"pknglst"表,代码如下:

    exec sp_addlinkedserver   'ITSV ''''SQLOLEDB','172.20.40.208 ','','','sea'
    exec sp_addlinkedsrvlogin  'ITSV ''false ',null'sa ''confidence'

    select * from ITSV.sea.dbo.pknglst

    "ITSV"为连接此数据库的别名。

    "SQLOLEDB"为与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)。MSSQL为SQLOLEDB。


    以后不再使用时删除链接服务器代码

    exec sp_dropserver  'ITSV ''droplogins '
    说明: 

    ------------------------------------------------

    sp_addlinkedsrvlogin

    创建或更新本地 Microsoft® SQL Server™ 实例上的登录与链接服务器上远程登录之间的映射。

    语法

    sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
        [ , [ @useself = ] 'useself' ]
        [ , [ @locallogin = ] 'locallogin' ]
        [ , [ @rmtuser = ] 'rmtuser' ]
        [ , [ @rmtpassword = ] 'rmtpassword' ]

    参数

    [@rmtsrvname =] 'rmtsrvname'

    是应用登录映射的链接服务器名称。rmtsrvname 的数据类型为 sysname,没有默认设置。

    [@useself =] 'useself'

    决定用于连接到远程服务器的登录名称。useself 的数据类型为 varchar(8),默认设置为 TRUEtrue 值指定 SQL Server 验证的登录使用其自己的凭据以连接到 rmtsrvname,而忽略 rmtuser rmtpassword 参数。false 值指定 rmtuser rmtpassword 参数用来连接到特定 locallogin rmtsrvname。如果 rmtuser rmtpassword 也设置为 NULL,则连接链接服务器不需使用任何登录或密码。对于 Windows NT 身份验证登录而言,useself true 则无效,除非 Microsoft Windows NT® 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 true 的映射,不过创建仍然有效)。

    [ @locallogin =] 'locallogin'

    本地服务器上的登录。locallogin 的数据类型为 sysname,默认设置为 NULLNULL 值指定此条目将应用于所有连接到 rmtsrvname 的本地登录。如果值不为 NULL,则 locallogin 可以是一个 SQL Server 登录或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或通过其作为已授予访问权限的组的成员来访问 SQL Server 的权限。

    [@rmtuser =] 'rmtuser'

    useself false 时,用来连接 rmtsrvname 的用户名,rmtuser 的数据类型为 sysname,默认设置为 NULL

    [@rmtpassword =] 'rmtpassword'

    rmtuser 相关的密码。rmtpassword 的数据类型为 sysname,默认设置为 NULL

    返回代码值

    0(成功)或 1(失败)

    注释

    当用户登录到本地服务器并执行分布式查询,以访问链接服务器上的表时,本地服务器必须登录链接服务器上,代表该用户访问该表。使用 sp_addlinkedsrvlogin 来指定本地服务器登录链接服务器的登录凭据。

    本地服务器上所有登录和链接服务器上的远程登录之间的默认映射通过执行 sp_addlinkedserver 自动创建。默认映射说明连接到链接服务器代表的登录时,SQL Server 使用本地登录的用户凭据(等同于将链接服务器的 @useself 设置为 true 时执行 sp_addlinkedsrvlogin)。使用 sp_addlinkedsrvlogin 只可以更改特定的本地服务器的默认映射或添加新映射。若要删除默认映射或任何其它映射,请使用 sp_droplinkedsrvlogin

    当所有下列条件存在时,SQL Server 可以自动地使用正在发出查询的用户的 Windows NT 安全凭据(Windows NT 用户名称和密码),以连接到链接服务器,而不是必须使用 sp_addlinkedsrvlogin 创建一个预设的登录映射。

    使用 Windows 身份验证模式,用户连接到 SQL Server

    在客户端和发送服务器上安全帐户委托是可用的。

    提供程序支持 Windows 身份验证模式(例如,运行于 Windows NT 上的 SQL Server)。

    使用映射(此映射通过在本地 SQL Server 上执行 sp_addlinkedsrvlogin 定义)的链接服务器执行身份验证后,远程数据库中单独对象的权限由链接服务器决定,而不是由本地服务器决定。

    不能从用户定义的事务中执行 sp_addlinkedsrvlogin

    sp_addlinkedserver

    创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft® SQL Server™,则可执行远程存储过程。

    语法

    sp_addlinkedserver [ @server = ] 'server'
        [ , [ @srvproduct = ] 'product_name' ]
        [ , [ @provider = ] 'provider_name' ]
        [ , [ @datasrc = ] 'data_source' ]
        [ , [ @location = ] 'location' ]
        [ , [ @provstr = ] 'provider_string' ]
        [ , [ @catalog = ] 'catalog' ]

    参数

    [ @server = ] 'server'

    要创建的链接服务器的本地名称,server 的数据类型为 sysname,没有默认设置。

    如果有多个 SQL Server 实例,server 可以为 servername"instancename。此链接的服务器可能会被引用为下面示例的数据源:

    SELECT *FROM    [servername"instancename.]pubs.dbo.authors.

    如果未指定 data_source,则服务器为该实例的实际名称。

    [ @srvproduct = ] 'product_name'

    要添加为链接服务器的 OLE DB 数据源的产品名称。product_name 的数据类型为 nvarchar(128),默认设置为 NULL。如果是 SQL Server,则不需要指定 provider_namedata_sourcelocationprovider_string 以及目录。

    [ @provider = ] 'provider_name'

    与此数据源相对应的 OLE DB 提供程序的唯一程序标识符 (PROGID)provider_name 对于安装在当前计算机上指定的 OLE DB 提供程序必须是唯一的。provider_name 的数据类型为nvarchar(128),默认设置为 NULLOLE DB 提供程序应该用给定的 PROGID 在注册表中注册。

    [ @datasrc = ] 'data_source'

    OLE DB 提供程序解释的数据源名称。data_source 的数据类型为 nvarchar(4000),默认设置为 NULLdata_source 被当作 DBPROP_INIT_DATASOURCE 属性传递以便初始化 OLE DB 提供程序。

    当链接的服务器针对于 SQL Server OLE DB 提供程序创建时,可以按照 servername"instancename 的形式指定 data_source它可以用来连接到运行于特定计算机上的 SQL Server 的特定实例上。servername 是运行 SQL Server 的计算机名称,instancename 是用户将被连接到的特定 SQL Server 实例的名称。

    [ @location = ] 'location'

    OLE DB 提供程序所解释的数据库的位置。location 的数据类型为 nvarchar(4000),默认设置为 NULLlocation 作为 DBPROP_INIT_LOCATION 属性传递以便初始化 OLE DB 提供程序。

    [ @provstr = ] 'provider_string'

    OLE DB 提供程序特定的连接字符串,它可标识唯一的数据源。provider_string 的数据类型为 nvarchar(4000),默认设置为 NULLProvstr 作为 DBPROP_INIT_PROVIDERSTRING 属性传递以便初始化 OLE DB 提供程序。

    当针对 Server OLE DB 提供程序提供了链接服务器后,可将 SERVER 关键字用作 SERVER=servername"instancename 来指定实例,以指定特定的 SQL Server 实例。servername SQL Server 在其上运行的计算机名称,instancename 是用户连接到的特定的 SQL Server 实例名称。

    [ @catalog = ] 'catalog'

    建立 OLE DB 提供程序的连接时所使用的目录。catalog 的数据类型为sysname,默认设置为 NULLcatalog 作为 DBPROP_INIT_CATALOG 属性传递以便初始化 OLE DB 提供程序。

    返回代码值

    0(成功)或 1(失败)

    结果集

    如果没有指定参数,则 sp_addlinkedserver 返回此消息:

    Procedure 'sp_addlinkedserver' expects parameter '@server', which was not supplied.

    使用适当 OLE DB 提供程序和参数的 sp_addlinkedserver 返回此消息:

    Server added.

    注释

    下表显示为可通过 OLE DB 访问的数据源设置链接服务器的方法。对于给定的数据源,可以使用多种方法为其设置链接服务器,下表中可能有不止一行适用于一种数据源类型。下表也显示了用于设置链接服务器的 sp_addlinkedserver 参数值。

    远程 OLE DB 数据源


    OLE DB
    提供程序


    product_name


    provider_name


    data_source



    location


    provider_string



    catalog

    SQL Server

    用于 SQL Server Microsoft OLE DB 提供程序

    SQL Server (1)(默认值)

    -

    -

    -

    -

    -

    SQL Server

    用于 SQL Server Microsoft OLE DB 提供程序

    SQL Server

    SQLOLEDB

    SQL Server 的网络名称(用于默认实例)

    -

    -

    数据库名称(可选)

    SQL Server

    用于 SQL Server Microsoft OLE DB 提供程序

    -

    SQLOLEDB

    服务器名"实例名(对于特定实例)

    -

    -

    数据库名称(可选)

    Oracle

    用于 Oracle Microsoft OLE DB 提供程序

    任何 (2)

    MSDAORA

    用于 Oracle 数据库的 SQL*Net 别名

    -

    -

    -

    Access/
    Jet

    用于 Jet Microsoft OLE DB 提供程序

    任何

    Microsoft.Jet.OLEDB.4.0

    Jet 数据库文件的完整路径名

    -

    -

    -

    ODBC 数据源

    用于 ODBC Microsoft OLE DB 提供程序

    任何

    MSDASQL

    ODBC 数据源的系统 DSN

    -

    -

    -

    ODBC 数据源

    用于 ODBC Microsoft OLE DB 提供程序

    任何

    MSDASQL

    -

    -

    ODBC 连接字符串

    -

    文件系统

    用于索引服务的 Microsoft OLE DB 提供程序

    任何

    MSIDXS

    索引服务目录名称

    -

    -

    -

    Microsoft Excel 电子表格

    用于 Jet Microsoft OLE DB 提供程序

    任何

    Microsoft.Jet.OLEDB.4.0

    Excel 文件的完整路径名

    -

    Excel 5.0

    -

    IBM DB2 数据库

    用于 DB2 Microsoft OLE DB 提供程序

    任何

    DB2OLEDB

    -

    -

    请参见用于 DB2 文档的 Microsoft OLE DB 提供程序

    DB2 数据库的目录名

    (1 ) 这种设置链接服务器的方式强制链接服务器的名称与远程 SQL Server 的网络名称相同。使用 server 指定服务器。
    (2 ) "
    任何"指产品名称可以任意。

    data_sourcelocationprovider_string catalog 参数标识链接服务器指向的数据库。如果任一参数为 NULL 值,则不设置相应的 OLE DB 初始化属性。

     

    ---------------------------------------------------------------------

    sp_addlinkedsrvlogin

    创建或更新本地 Microsoft® SQL Server™ 实例上的登录与链接服务器上远程登录之间的映射。

    语法

    sp_addlinkedsrvlogin [ @rmtsrvname = ] 'rmtsrvname'
        [ , [ @useself = ] 'useself' ]
        [ , [ @locallogin = ] 'locallogin' ]
        [ , [ @rmtuser = ] 'rmtuser' ]
        [ , [ @rmtpassword = ] 'rmtpassword' ]

    参数

    [@rmtsrvname =] 'rmtsrvname'

    是应用登录映射的链接服务器名称。rmtsrvname 的数据类型为 sysname,没有默认设置。

    [@useself =] 'useself'

    决定用于连接到远程服务器的登录名称。useself 的数据类型为 varchar(8),默认设置为 TRUEtrue 值指定 SQL Server 验证的登录使用其自己的凭据以连接到 rmtsrvname,而忽略 rmtuser rmtpassword 参数。false 值指定 rmtuser rmtpassword 参数用来连接到特定 locallogin rmtsrvname。如果 rmtuser rmtpassword 也设置为 NULL,则连接链接服务器不需使用任何登录或密码。对于 Windows NT 身份验证登录而言,useself true 则无效,除非 Microsoft Windows NT® 环境支持安全帐户委托,并且,提供程序支持 Windows 身份验证(此时不再需要创建值为 true 的映射,不过创建仍然有效)。

    [ @locallogin =] 'locallogin'

    本地服务器上的登录。locallogin 的数据类型为 sysname,默认设置为 NULLNULL 值指定此条目将应用于所有连接到 rmtsrvname 的本地登录。如果值不为 NULL,则 locallogin 可以是一个 SQL Server 登录或 Windows NT 用户。必须授予 Windows NT 用户直接访问 SQL Server 或通过其作为已授予访问权限的组的成员来访问 SQL Server 的权限。

    [@rmtuser =] 'rmtuser'

    useself false 时,用来连接 rmtsrvname 的用户名,rmtuser 的数据类型为 sysname,默认设置为 NULL

    [@rmtpassword =] 'rmtpassword'

    rmtuser 相关的密码。rmtpassword 的数据类型为 sysname,默认设置为 NULL

    返回代码值

    0(成功)或 1(失败)

    注释

    当用户登录到本地服务器并执行分布式查询,以访问链接服务器上的表时,本地服务器必须登录链接服务器上,代表该用户访问该表。使用 sp_addlinkedsrvlogin 来指定本地服务器登录链接服务器的登录凭据。

    本地服务器上所有登录和链接服务器上的远程登录之间的默认映射通过执行 sp_addlinkedserver 自动创建。默认映射说明连接到链接服务器代表的登录时,SQL Server 使用本地登录的用户凭据(等同于将链接服务器的 @useself 设置为 true 时执行 sp_addlinkedsrvlogin)。使用 sp_addlinkedsrvlogin 只可以更改特定的本地服务器的默认映射或添加新映射。若要删除默认映射或任何其它映射,请使用 sp_droplinkedsrvlogin

    当所有下列条件存在时,SQL Server 可以自动地使用正在发出查询的用户的 Windows NT 安全凭据(Windows NT 用户名称和密码),以连接到链接服务器,而不是必须使用 sp_addlinkedsrvlogin 创建一个预设的登录映射。

    使用 Windows 身份验证模式,用户连接到 SQL Server

    在客户端和发送服务器上安全帐户委托是可用的。

    提供程序支持 Windows 身份验证模式(例如,运行于 Windows NT 上的 SQL Server)。

    使用映射(此映射通过在本地 SQL Server 上执行 sp_addlinkedsrvlogin 定义)的链接服务器执行身份验证后,远程数据库中单独对象的权限由链接服务器决定,而不是由本地服务器决定。

    不能从用户定义的事务中执行 sp_addlinkedsrvlogin

  • 相关阅读:
    11.1作业
    10.25作业
    10.18作业
    zancun
    10.11作业
    SQL日期格式,转自will哥
    转自pnljs 委托(Func<int,bool>)
    ORM即 对象-关系映射(转自:微冷的雨)
    跨域上传文件(还是没有明白)
    webSocket详解
  • 原文地址:https://www.cnblogs.com/scottckt/p/1323767.html
Copyright © 2011-2022 走看看