INSERT INTO DB_02.dbo.MF_POS 
SELECT *
FROM DB_01.dbo.MF_POS       
WHERE NOT EXISTS(
SELECT * 
FROM DB_02.dbo.MF_POS 
WHERE   DB_02.dbo.MF_POS.OS_NO=DB_01.dbo.MF_POS.OS_NO)  AND
DB_01.dbo.MF_POS.OS_ID='SO'  and  DB_01.MF_POS.OS_NO  LIKE  'SOB9%'出现以下提示:服务器: 消息 107,级别 16,状态 2,行 1
列前缀 'DB_01.MF_POS_Z' 与查询中所用的表名或别名不匹配。如果去掉这个and  DB_01.MF_POS.OS_NO  LIKE  'SOB9%'条件就可以了,我不知道原因,请指点一下!

解决方案 »

  1.   

     DB_01.MF_POS.OS_NO  少了个dbo
      

  2.   

    and  DB_01.dbo.MF_POS.OS_NO  LIKE  'SOB9%' 
      

  3.   

    DB_01..MF_POS  LIKE  'SOB9%' 
      

  4.   


    语法:数据库名.所有者.对象名
    如果在sql语句中很多地方都需要这样使用,可以创建同义词。方便使用。如:CREATE SYNONYM pos1 for DB_01.dbo.MF_POS
    go
    CREATE SYNONYM pos2 for DB_02.dbo.MF_POS
    goINSERT INTO pos2 
    SELECT * FROM pos1
    WHERE NOT EXISTS(SELECT * FROM pos2 WHERE  pos2.OS_NO=pos1.OS_NO)  
    AND pos1.OS_ID='SO'  and  pos1.OS_NO  LIKE  'SOB9%' 
      

  5.   

    'DB_01.MF_POS_Z'这个在你那里根本都没发现呀,晕,可以作用别名来吧
      

  6.   


    语法:数据库名.所有者.对象名DB_01.MF_POS.OS_NO  少了个dbo
      

  7.   

    服务器: 消息 8152,级别 16,状态 9,行 1
    String or binary data would be truncated.
    The statement has been terminated.这个是什么意思?
      

  8.   

    插入表中的字符串或二进制数据将会被截断。可能是 DB_02.dbo.MF_POS 表中与插入数据对应列的长度不够。