SQLServer错误207列名“%.*ls”无效。故障处理修复支持远程

详细信息

Attribute
产品名称 SQL Server
事件 ID 207
事件源 MSSQLSERVER
组件 SQLEngine
符号名称 SQ_BADCOL
消息正文 列名“%.*ls”无效。

说明

此查询错误可能是由以下问题之一导致的:

网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了宾川免费建站欢迎大家使用!

  • 列名称拼写错误,或任一指定的表中不存在该列。

  • 数据库的排序规则区分大小写,在查询中指定的列名与表中所定义的列名的大小写不同。 例如,如果将某列在表中定义为 LastName 而且数据库使用区分大小写的排序规则,那么,以 Lastnamelastname 形式引用该列的查询将因列名不匹配而导致返回错误 207。

  • 在 SELECT 子句中定义的列别名在另一个如 WHERE 或 GROUP BY 之类的子句中被引用。 例如,以下查询在 SELECT 子句中定义列别名 Year,并在 GROUP BY 子句中将其引用。

    USE AdventureWorks2012;  
    GO  
    SELECT DATEPART(yyyy,OrderDate) AS Year, SUM(TotalDue) AS Total  
    FROM Sales.SalesOrderHeader  
    GROUP BY Year;  
    

    由于查询子句逻辑上处理的顺序,该示例返回错误 207。 处理顺序如下所示:

    1. FROM

    2. ON

    3. JOIN

    4. WHERE

    5. GROUP BY

    6. WITH CUBE 或 WITH ROLLUP

    7. HAVING

    8. SELECT

    9. DISTINCT

    10. ORDER BY

    11. TOP

    因为列别名是在处理 SELECT 子句后定义的,所以当处理 GROUP BY 子句时列别名是未知的。

  • 当 merge_matched 子句引用源表中的<列,但 WHEN NOT MATCHED BY SOURCE 子句中的源表未返回任何行时,MERGE 语句将引发此错误。> 该错误的发生是因为当未返回任何行到查询中时源表中的列不能被访问。 例如,如果无法访问源表中的 WHEN NOT MATCHED BY SOURCE THEN UPDATE SET TargetTable.Col1 = SourceTable.Col1Col1 子句可能导致该语句失败。

用户操作

查看以下信息并根据需要更正该语句。

  • 表中存在此列名且该列名拼写正确。 下面的示例查询 sys.columns 目录视图以返回给定表的所有列名称。

    SELECT name FROM sys.columns WHERE object_id = OBJECT_ID('schema_name.table_name');  
    
  • 数据库排序规则区分大小写。 以下语句返回指定数据库的排序规则。

    SELECT collation_name FROM sys.databases WHERE name = 'database_name';  
    

    排序规则名称中的缩写 CS 指示排序规则区分大小写。 例如,Latin1_General_CS_AS 是一个区分大小写和重音符号的排序规则。 更改列名使之与表中定义的列名的大小写相同。

  • 列别名引用不正确。 通过重复在相应子句中定义别名的表达式或通过使用派生表,对语句进行更改。 下面的示例重复在 GROUP BY 子句中定义 Year 别名的表达式。

    USE AdventureWorks2012;  
    GO  
    SELECT DATEPART(yyyy,OrderDate) AS Year ,SUM(TotalDue) AS Total  
    FROM Sales.SalesOrderHeader  
    GROUP BY DATEPART(yyyy,OrderDate);  
    

    以下示例使用派生表使得别名可用于查询中的其他子句。 请注意,Year 别名是在首先处理的 FROM 子句中定义的,所以可以在查询中的其他子句中使用该别名。

    USE AdventureWorks2012;  
    GO  
    SELECT d.Year, SUM(TotalDue) AS Total  
    FROM (SELECT DATEPART(yyyy,OrderDate) AS Year, TotalDue  
          FROM Sales.SalesOrderHeader)AS d  
    GROUP BY Year;  
    
  • MERGE 语句中的 WHEN NOT MATCHED BY SOURCE 子句引用的是可以访问的值。 修改 MERGE 语句,使源表至少在 WHEN NOT MATCHED BY SOURCE 子句中返回一行。 例如,您可能需要添加或修订为子句指定的搜索条件。 或者,也可以更改该子句以指定没有引用源表的值。 例如,WHEN NOT MATCHED BY SOURCE THEN UPDATE SET TargetTable.Col1 =

香港美国云服务器选创新互联,2H2G首月10元开通。
创新互联(www.cdcxhl.com)互联网服务提供商,拥有超过10年的服务器租用、服务器托管、云服务器、虚拟主机、网站系统开发经验。专业提供云主机、虚拟主机、域名注册、VPS主机、云服务器、香港云服务器、免备案服务器等。

标题名称:SQLServer错误207列名“%.*ls”无效。故障处理修复支持远程
文章网址:http://www.mswzjz.cn/qtweb/news47/122247.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能