none
求助,Sql里面,Set文里面加入服务器名.DB名.Dbo执行就会报错 RRS feed

  • 问题

  • 最近新搭了一个SqlServer2016的服务器,但是执行下面代码的时候就报错了。

    提示服务器HNKSZN找不到。

    但是,如果把Set里面的HNKSZN.干掉,就能正常执行了。

    是否有一个设定可以让这个SQL能正常执行过去。

    之前搭的一个不知道设定了什么,这个是可以正常执行过去的。

    UPDATE HNKSZN.MyData61.dbo.MST_GOODS
       SET HNKSZN.MyData61.dbo.MST_GOODS.MR_DA_CODE    = '120001',
           HNKSZN.MyData61.dbo.MST_GOODS.MR_HIN        = '00',
           HNKSZN.MyData61.dbo.MST_GOODS.MR_CT_KEISAN  = 11,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_CT_TMARUME = 4,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_CT_KMARUME = 5,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_CR_KEISAN  = 21,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_CR_TMARUME = 4,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_CR_KMARUME = 4,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_KEISAN     = 31,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_TMARUME    = 1,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_KMARUME    = 1,
           HNKSZN.MyData61.dbo.MST_GOODS.MR_UP_USER    = '01KU88',
           HNKSZN.MyData61.dbo.MST_GOODS.MR_UP_DATE    = '2018/02/11 16:41:14'
     WHERE MyData61.dbo.MST_GOODS.MR_DA_CODE = '120001'
       AND MyData61.dbo.MST_GOODS.MR_HIN = '00'


    2018年2月13日 2:55

全部回复

  • Hi 冉冉Sunshine,

    这种写法一般是在linked server或者registered server上查询时使用的,你查询一下select * from sys.servers里面有没有这台服务器。

    另外其实没有必要这样写,一般只要update里面指定好object name,下面只要使用column name就可以了。

    UPDATE HNKSZN.MyData61.dbo.MST_GOODS
       SET MR_DA_CODE    = '120001',
           MR_HIN        = '00',
           MR_CT_KEISAN  = 11,
           MR_CT_TMARUME = 4,
           MR_CT_KMARUME = 5,
           MR_CR_KEISAN  = 21,
           MR_CR_TMARUME = 4,
           MR_CR_KMARUME = 4,
           MR_KEISAN     = 31,
           MR_TMARUME    = 1,
           MR_KMARUME    = 1,
           MR_UP_USER    = '01KU88',
           MR_UP_DATE    = '2018/02/11 16:41:14'
     WHERE MR_DA_CODE = '120001'
       AND MR_HIN = '00'

    Best Regards,

    Teige


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月13日 5:44
    版主
  • 之前成功的是什么版本?

    这个语句明显有问题啊,不说列名,你 WHERE 条件中的列直接来自一个本地表,这种写法应该是没有那个版本支持的啊

    2018年2月13日 8:42
  • 当然,而从错误信息来看,是链接服务器不存在,还没到执行的步骤,我只是很好奇你在什么版本上能成功执行

    2018年2月13日 8:45
  • 之前的成功地是SQLSERVER2000的版本。

    是客户那边的环境。

    同样的程序在他们那边执行的是没有问题的。到这便就不好使了。


    2018年2月14日 1:52
  • LinkedServer也不好使,好像是说Set里面的小数点的个数太多了。

    好像说最多三个点。

    把Set里面的服务器名去掉就可以正常执行了。

    因为现在客户那边执行的整个系统都是这么写的。所以我认为,是不是SQLServer有个权限设定之类的,可以放宽这种Checke。

    2018年2月14日 1:58
  • Hi 冉冉Sunshine,

    2000到2016的版本跨度很大,同样的程序不能执行是正常的。新的2016版本里面这样写是有错误的。

    Best Regards,

    Teige


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2018年2月26日 6:01
    版主