上面搞错啦,应该是:
因为我从一个ACCESS数据库的一个表A插入到SQL SERVER 数据库表B中,两个表的结构不一样的,我建数据源,用BatchMove数度很慢,所以我决定:在SQL SERVER数据库中写一存储过程,访问一个ACCESS表,这只是一个简单的模型
CREATE PROCEDURE [dbo].[TranCode] 
 AS
  SELECT a.*
   FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0 ', 
    'c:\MSOffice\Access\Samples\northwind.mdb';'admin';'mypwd', Orders) 
    AS aGO在查询分析器中执行没错,但在这存取过程中,报错:
  异类查询要求为连接设置ANSI_NULLS和ANSI_WARNINGS选项。这将确保
一致的查询定义。请启用这些选项,然后从新发出查询
请问一下,我该怎么设置?

解决方案 »

  1.   


    SET ANSI_NULLS
    指定在对空值使用等于 (=) 和不等于 (<>) 比较运算符时,这些运算符的 SQL-92 遵从行为。语法
    SET ANSI_NULLS {ON | OFF}注释
    SQL-92 标准要求对空值的等于 (=) 或不等于 (<>) 比较取值为 FALSE。当 SET ANSI_NULLS 为 ON 时,即使 column_name 中存在空值,使用 WHERE column_name = NULL 的 SELECT 语句仍返回零行。即使 column_name 中存在非空值,使用 WHERE column_name <> NULL 的 SELECT 语句仍返回零行。
    SET ANSI_WARNINGS
    指定几种错误情况下的 SQL-92 标准行为。语法
    SET ANSI_WARNINGS { ON | OFF }注释
    SET ANSI_WARNINGS 影响以下情况: 当设置为 ON 时,如果聚合函数(如 SUM、AVG、MAX、MIN、STDEV、STDEVP、VAR、VARP 或 COUNT)中出现空值,将生成警告信息。当设置为 OFF 时,不发出警告。
    当设置为 ON 时,被零除错误和算术溢出错误将导致回滚语句并生成错误信息。当设置为 OFF 时,被零除错误和算术溢出错误将导致返回空值。如果在 character、Unicode 或 binary 列上尝试执行 INSERT 或 UPDATE 操作,而这些列中的新值长度超出最大列大小,则被零除错误和算术溢出错误将导致返回空值。如果 SET ANSI_WARNINGS 为 ON,则按 SQL-92 标准的指定将取消 INSERT 或 UPDATE。将忽略字符列的尾随空格,忽略二进制列的尾随零。当设置为 OFF 时,数据将剪裁为列的大小,并且语句执行成功。 
    说明  在 binary 或 varbinary 数据转换中发生截断时,不管 SET 选项的设置是什么,都不发出警告或错误信息。你在查询语句之前加上: SET ANSI_NULLS ON
     ANSI_WARNINGS ON这样试试
      

  2.   

    上面的写错了,应该是:
    SET ANSI_NULLS ON
    SET ANSI_WARNINGS ON