'。'附近的语法无效在C#
问题描述:
使用参数,即使我有这样的SQL查询:'。'附近的语法无效在C#
Select distinct
cols.referenced_entity_name
from
sys.sql_expression_dependencies objs
outer apply
sys.dm_sql_referenced_entities (OBJECT_SCHEMA_NAME(objs.referencing_id) + N'.' + object_name(objs.referencing_id), N'OBJECT') as cols
where
objs.referencing_id = object_id('viewname')
这将返回我的依赖关系的列表,给定视图
这个查询在SQL工作。然而,当我把它变成一个C#类这样
Select distinct
cols.referenced_entity_name as depedency
from
sys.sql_expression_dependencies objs
outer apply
sys.dm_sql_referenced_entities (OBJECT_SCHEMA_NAME(objs.referencing_id) + [email protected] + object_name(objs.referencing_id), [email protected]) as cols
where
objs.referencing_id = object_id(@view)
与参数为@period
= .
和@object
=对象和@view
=视图名,我得到一个异常
无效的语法附近“” 。
我原本没有的 ''作为一个参数,并发送它只是'。'但它也拒绝了(我逃脱了'如此'。'',以使得到的字符串只是'。')
这种类型的难题我能做些什么来使查询工作...正如我所说的,如果我只是在SQL Server Management Studio中运行它,它工作正常。
我打开替代查询来获取我相同的结果顺便说一句,我从Determine table referenced in a view in SQL Server
此查询并返回我所寻找的是一个返回的视图相依查询和我说工作在查询分析器,但不能得到时通过SqlCommand
对象在C#中通过了它的功能
编辑::
OK我挖成在查询上面提到的观点和我的生活中,我找不出为什么这个查询不会给我同样的结果
Select referenced_entity_name as dependancy from sys.sql_expression_dependencies where referencing_id = object_id('viewname')
据我所知,它给了我一个更清晰的查询相同的结果,但我不完全是系统视图的专家。
谁能告诉我,如果他们认为这应该给我相同的结果无误?
因为如果这样做,它消除了N'的需要。这是造成我的悲痛试图参数在C#
答
的解决方案是,你需要在查询中使用@object,但是当你设置的参数在C#中,您可以定义类型:
System.Data.SqlDbType.NVarChar
这将使它,所以你不必使用N前缀。
另一件需要注意的事情是,你想使用"."
而不是'.'
,因为它们是两个不同的东西:字符串和字符。
'N - [object'是*不*有效语法,只需用'@ object',或更好,但只是''OBJECT''因为它是恒定的。同一时期。 –
即使我在@period参数前删除了N,我仍然得到无效的语法'。' – Bastyon
http:// stackoverflow。com/questions/2725548/sql-server-all-object-dependencies – MethodMan