另一种建立连接的方法为通过SQL语句的方式。建立连接使用sp_addlinkedserver存贮过程。其语法结构如下:sp_addlinkedserver [@server =] 'server' [, ][@srvproduct =] 'product_name'] [, ][@provider =] 'provider_name'] [, ][@datasrc =] 'data_source'] [, ][@location =] 'location'] [, ][@provstr =] 'provider_string'] [, ][@catalog =] 'catalog']此存贮过程共有七个参数,其含义分别如下:■ server:要建立的连接的名称。■ srvproduct:为要连接的数据源的产品名称。此参数默认为空。■ provider:为要连接的数据源的产品的唯一标识符。在注册表中HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers项中,有本地服务器支持的所有连接数据类型的名称。■ datasrc:作为此数据源的一个解释信息。此参数默认为空。■ location:作为此数据源所在位置的一个解释信息。此参数默认为空。■ provstr:为此数据源的连接串。此参数默认为空。■ catalog:指明连接时使用的目录。此参数默认为空。下面的表格列出了对于连接不同类型的数据,所用参数的取值情况。数据源 数据类型 product_name provider_name data_source location provider_string catalogSQL Server Microsoft OLE DB Provider for SQL Server SQL Server(注) - - - - -SQL Server Microsoft OLE DB Provider for SQL Server SQL Server SQLOLEDB SQL Server服务器名 - - 数据库名(可选)Oracle Microsoft OLE DB Provider for Oracle 任意 MSDAORA SQL*Netalias for Oracle database - - -Access/Jet Microsoft OLE DB Provider for Jet 任意 Microsoft.Jet.OLEDB.4.0 数据库文件的完全路径和文件名 - - -ODBC data source Microsoft OLE DB Provider for ODBC 任意 MSDASQL System DSN of ODBC data source - - -ODBC data source Microsoft OLE DB Provider for ODBC 任意 MSDASQL - - ODBC 连接串 -File system Microsoft OLE DB Provider for Indexing Service 任意 MSIDXS Index Server的索引目录名称 - - -Microsoft Excel Spreadsheet Microsoft OLE DB Provider for Jet 任意 Microsoft.Jet.OLEDB.4.0 Excel文件的完全路径和文件名 - Excel 5.0 -Site Server Full-Text Queries Microsoft OLE DB Provider for Site Server 任意 MSSEARCHSQL Site Server的索引目录名称 - - -注:使用此方式将强制连接到同连接名相同的SQL Server服务器。 下面的例子将完成与我们在前面通过Enterprise Manager所做的同样的工作。 EXECUTE sp_AddLinkedServer FileSystem, 'Indexing Service', 'MSIDXS', 'Web' 此外还有以下几个同连接有关的存贮过程: sp_dropserver:用于删除已经建立的连接,其语法结构如下: sp_dropserver [@server =] 'server' [, ][@droplogins =]{'droplogins' | NULL}] 其中server参数指明要删除的连接的名字。Droplogins则指明同时将为此连接建立的登录删除。 sp_addlinkedsrvlogin:用于为连接建立一个登录,其语法结构如下: sp_addlinkedsrvlogin [@rmtsrvname =] 'rmtsrvname' [,][@useself =] 'useself'] [,][@locallogin =] 'locallogin'] [,][@rmtuser =] 'rmtuser'] [,][@rmtpassword =] 'rmtpassword'] 其中rmtsrvname参数为连接的名称。 Useself的取值为TRUE或FALSE,指明是否在远程服务器上直接使用此登录。这要求在远程服务器上有一同此登录相匹配的登录。此参数默认为TRUE。 Locallogin为一本地登录名。此参数默认为空。如果使用默认值,则意味着所有的本地登录都将连接到远程服务器。 rmtuser和rmtpassword分别为远程服务器上的登录名及口令。如果useself参数为TRUE,则这两个参数将被忽略。 sp_linkedservers:将返回当前本地服务器上所有连接的相关信息。其典型的运行结果如下:SRV_NAME SRV_PROVIDERNAME SRV_PRODUCT SRV_DATASOURCE SRV_PROVIDERSTRING SRV_LOCATION SRV_CAT-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------FILESYSTEM MSIDXS index server NULL NULL web NULLZW SQLOLEDB SQL Server ZW NULL NULL NULL(2 row(s) affected) 其中返回的第一行数据为我们在前面建立的Index Server连接。而第二行数据为我们在Enterprise Manager所建立的用来管理SQL Server的连接。也就是在Enterprise Manager中注册的SQL Server。 sp_droplinkedsrvlogin:用于删除为远程连接建立的登录。其语法结构如下: sp_droplinkedsrvlogin [@rmtsrvname =] 'rmtsrvname', [@locallogin =] 'locallogin' 其中rmtsrvname参数为连接的名称。Locallogin参数是为远程连接建立的本地登录。如要删除此登录,要求必须存在映射到此登录的远程连接。