• 如何方便的建立远程链接服务器


    -- 很多朋友问局域网多数据库服务器访问该如何操作?下面简单说明如何配置远程链接访问。

    /*********** 环境说明 ***********/

    -- 源机器 IP  10. 0.0.211 ,在该机器所在数据库建立与目标机器的远程数据库链接。

    -- 目标机器 IP  10. 0.0.222 

    -- 步骤(一)是指直接用 IP 进行远程链接,个人觉得用 IP 链接虽然麻烦,但是直观而且在多服务器操作时不会出现误链接的情况。

    -- 步骤(二)是指直接用别名进行远程链接,较方便;但在高压力,大脑暂时短路情况下容易出现误链接数据库情况发生。

     

    /*********** 步骤(一) ***********/

    -- 建立连接服务器

    EXEC sp_addlinkedserver   '10.0.0.222' , 'SQL Server'

     

    /*-- 如果数据库有架构名需要做远程登录之间的映射

    -- 创建链接服务器上远程登录之间的映射

    EXEC sp_addlinkedsrvlogin '10.0.0.222','false','SA',' 架构名 ',' 登录密码 '

    */

    -- 查询数据

    -- 含架构名

    select top 10 * from [10.0.0.222]. 数据库名 . 架构名 . 表名

    -- 不含架构名

    select top 10 * from [10.0.0.222]. 数据库名 . dbo. 表名

     

     

    -- 查看链接服务器信息

    select name , product, provider, data_source, query_timeout, lazy_schema_validation, is_remote_login_enabled, is_rpc_out_enabled

      from sys.servers

    where is_linked= 1

     

    /*********** 建立步骤(二) ***********/

    /*-- 如果用 IP 连接觉得麻烦,可以新建别名

    -- 配置链接服务器属性

    exec sp_serveroption '222','name','10.0.0.222'

    */

    -- 查询数据

    -- 含架构名

    select top 10 * from 222. 数据库名 . 架构名 . 表名

    -- 不含架构名

    select top 10 * from 222. 数据库名 . dbo. 表名

     

     

    -- 删除链接服务器登录名映射

    exec sp_droplinkedsrvlogin '10.0.0.222' ,NULL

     

    -- 删除链接服务器属性

    exec sp_dropserver '222'

     

    --注:如果执行 删除链接服务器时提示如下错误时,

    消息 15190,级别 16,状态 1,过程 sp_dropserver,第 56 行
    仍有对服务器 'XXXX' 的远程登录或链接登录。

    执行

    exec sp_dropserver ' 链接服务器 ' , 'droplogins'

     

     select * from [Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0]


    use 库名 

    go

    SELECT objtype, objname, name, value
    FROM fn_listextendedproperty(defaultdefaultdefaultdefaultdefaultdefaultdefault);

    select * from sys.extended_properties

    SELECT objtype, objname, name, value 
    FROM fn_listextendedproperty(NULL'schema''dbo''table''form''column'default);

    select * from information_schema.columns where table_name= 'form'


    SELECT DISTINCT 
          
    TOP 100 PERCENT isnull(p.name,''AS 父对象, o.xtype, 
          
    CASE o.xtype WHEN 'C' THEN 'CHECK 约束' WHEN 'D' THEN '默认值或DEFAULT约束'
           
    WHEN 'F' THEN 'FOREIGNKEY约束' WHEN 'L' THEN '日志' WHEN 'FN' THEN '标量函数'
           
    WHEN 'IF' THEN '内嵌表函数' WHEN 'P' THEN '存储过程' WHEN 'PK' THEN 'PRIMARYKEY约束'
           
    WHEN 'RF' THEN '复制筛选存储过程' WHEN 'S' THEN '系统表' WHEN 'TF' THEN '表函数'
           
    WHEN 'TR' THEN '触发器' WHEN 'U' THEN '用户表' WHEN 'UQ' THEN 'UNIQUE 约束'
           
    WHEN 'V' THEN '视图' WHEN 'X' THEN '扩展存储过程' WHEN 'R' THEN '规则' ELSE NULL
           
    END AS 类型, o.name AS 对象名, o.crdate AS 创建时间, o.refdate AS 更改时间, 
          c.
    text AS 声明语句,OBJECTPROPERTY(o.id, N'IsMSShipped')
    FROM dbo.sysobjects o Left JOIN
          dbo.sysobjects p 
    ON o.parent_obj = p.id LEFT OUTER JOIN
          dbo.syscomments c 
    ON o.id = c.id
    WHERE --(o.xtype IN ('C','D','F','PK','UQ','L','FN','IF','TF','TR','P','R','RF','X','S','U','V')) AND 
          (OBJECTPROPERTY(o.id, N'IsMSShipped'= 0AND (isnull(p.name,''<> N'dtproperties'and o.xtype = 'U'
    ORDER BY o.xtype DESC


    if exists(select 1 from sysobjects  where     id   =   object_id'BarCode'and type   =   ''
          
    drop table BarCode 
    go 

    /*==============================================================*/ 
    /*   Table:   BarCode                                                                                               */ 
    /*==============================================================*/ 
    create   table   BarCode   ( 
          ID    
    int    not   null
          Style   
    char(18null
          Content 
    varchar(512null
          Height  
    int  null
          Wdith   
    int  null
          Remark 
    varchar(512null
          
    constraint   PK_BARCODE   primary   key   (ID) 

    go 

    select * from Form where id = '016336CC-C7FA-43D2-9EA5-C3F9A5B47A50'
    select * from [Form_016336CC-C7FA-43D2-9EA5-C3F9A5B47A50_0]

    select o.name,c.text,'N' from [InsulationExpertSystem_CD_2010-02-16_backup].dbo.sysobjects o ,dbo.syscomments c 
         
    where o.id = c.id and o.xtype = 'V' and o.name = 'View_1'


    --创建链接服务器:
    exec master.sys.sp_addlinkedserver 'srv_lnk','','SQLOLEDB','DEVELOPPC-PC'
    exec master.sys.sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','sa'
    exec master.sys.sp_serveroption 'srv_lnk','rpc out','true' --这个允许调用链接服务器上的存储过程
    go
    --exec master.sys.sp_dropserver 'srv_lnk','droplogins' --不用就删除
    --
    go

    用SQL语句将远程SQL Server数据库中表数据导入到本地数据库相应的表中

     怎样用SQL语句将一个远程SQL Server数据库中各个表的数据导入到本地数据库相应的表中

    发表时间:2005-7-18

      怎样用SQL语句将一个远程SQL Server数据库中各个表的数据导入到本地数据库相应的表中?
      表结构完全相同,听说DTS比较方便,但是不会用

      一、方法一

      1、远程数据库注册到本地的方法

     

    exec sp_addlinkedserver '名称','','SQLOLEDB','远程数据库的地址'

    exec sp_addlinkedsrvlogin '名称','false','本地用户名称','远程用户名称','远程用户密码'

     

      2、倒入表

     

    insert 数据库.dbo.表
    select * from 远程名称.dbo.表 

     

      建立了连接后,试试看

      二、方法二

      访问不同电脑上的数据库(远程访问,只好联好网就一样),如果经常访问或数据量较大,建议用链接服务器方法。

      1、创建链接服务器

     

    exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或IP地址'
    exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
    exec sp_serveroption 'srv_lnk','rpc out','true'  --这个允许调用链接服务器上的存储过程
    go 


       2、使用示例

     

     

    --查询示例
    select * from srv_lnk.数据库名.dbo.表名

    --导入示例
    select * into 表 from srv_lnk.数据库名.dbo.表名

    go 

     

       3、若不再使用时,删除链接服务器

     

    exec sp_dropserver 'srv_lnk','droplogins' 

     


      三、方法三

      如果只是临时访问,可以直接使用openrowset。 

      1、示例1

     

    --查询示例
    select * from openrowset('SQLOLEDB'
    ,'sql服务器名';'用户名';'密码',数据库名.dbo.表名) 

    --导入示例
    select * into 表 from openrowset('SQLOLEDB'
    ,'sql服务器名';'用户名';'密码',数据库名.dbo.表名)


      2、示例2(此示例使用测试正常)

     

     

    insert 数据库名称.dbo.表
    select * from 
    from  openrowset('MSDASQL',
    'DRIVER={SQL Server};SERVER=远程服务器地址;UID=用户名;PWD=密码',表) AS a 


      四、相关问题

     

      问:当导入的数据量很大,而网络突然中断,会不会出现问题?

      答:中断的话,就等于什么也没做,也就是事务回滚,重新运行。

      五、随后的问题

      问:由于在表中,通常都定义了自增量列及主键,而自增量列还进行了关连。由于在倒表时,自增量列不随原表变化,就造成了关联关系的丢失,通常的做法是:

     

    SET IDENTITY_INSERT 表名 ON
    insert into 表名(字段,字段,字段) values (64,'han','guo')
    SET IDENTITY_INSERT 表名OFF

     

    即使用“SET IDENTITY_INSERT 表名 ON”将自增量关闭,但是,需要注意的是,当该表中没有自增量字段时,使用该命令会产生一个错误。

    因此,在没有自增量字段的表中进行“插入”操作时,请不要使用“SET IDENTITY_INSERT 表名 ON”。

     

     


  • 相关阅读:
    python3编译安装no module named _ssl
    java中的、标识符、运算符以及数据类型之间的转换。
    Java中的基本数据类型
    java中的类和对象
    什么是JDK,JRE
    HTML是什么
    test
    Obtain older GMT versions
    How to understand three foundanmental faults?
    wilber3申请数据的直接目录寻找
  • 原文地址:https://www.cnblogs.com/wpf123/p/2052876.html
Copyright © 2020-2023  润新知