Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql 在Visual Studio 2012中使用数据库项目和SQL数据工具:如何获取要解析的临时表?_Tsql_Visual Studio 2012_Database Project_Sql Server Data Tools - Fatal编程技术网

Tsql 在Visual Studio 2012中使用数据库项目和SQL数据工具:如何获取要解析的临时表?

Tsql 在Visual Studio 2012中使用数据库项目和SQL数据工具:如何获取要解析的临时表?,tsql,visual-studio-2012,database-project,sql-server-data-tools,Tsql,Visual Studio 2012,Database Project,Sql Server Data Tools,我正在学习Visual Studio 2012的“数据库项目”系统,使用Visual Studio 2012和更新1以及SSDT 我发现它非常擅长发现数据库中的实际问题,特别是存储过程中的编程错误,其中有人从数据库表中删除了一个字段,但没有检查并验证所有存储过程是否执行无误。因此,在VisualStudio2012中通过“build”命令验证.sql脚本非常方便。我不想放弃它 但我还注意到,每当在存储过程中使用#tentable时,即使关闭了“启用公共对象的扩展Transact-SQL验证”,我

我正在学习Visual Studio 2012的“数据库项目”系统,使用Visual Studio 2012和更新1以及SSDT

我发现它非常擅长发现数据库中的实际问题,特别是存储过程中的编程错误,其中有人从数据库表中删除了一个字段,但没有检查并验证所有存储过程是否执行无误。因此,在VisualStudio2012中通过“build”命令验证.sql脚本非常方便。我不想放弃它

但我还注意到,每当在存储过程中使用#tentable时,即使关闭了“启用公共对象的扩展Transact-SQL验证”,我仍然会在存储过程中遇到涉及#tentable.field引用的“生成错误”

数据库项目采取哪些步骤来确定临时表的模式?由于我的临时表按定义不存在于主模式中,因此在创建数据库之后,当我通过导入数据库选项将实际生产SQL数据库导入Visual Studio时,它们没有进入我的数据库项目

我应该创建“#tentable.SQL”文件并将其添加到我的项目中吗

示例错误:

c:\dev\...\dbo\Stored Procedures\xyz.sql(95,96): Warning:  SQL71502: Procedure: [dbo].[proc123] has an unresolved reference to object [#temptable1].[somefield1].
如果有一种方法可以包含一个脚本,该脚本定义了一次使用中的诱惑,并将其包含到各个地方,在这些地方,如果要彻底验证T-SQL,则有必要了解这些内容,那就好了,如果扩展验证的功能实现了我认为它应该做的,那么可能就没有什么必要了


这表明这是一个技术刚刚被彻底突破的领域,而微软对此已经了解多年,却一无所获。VS2012.U1+SSDT_Dec2012现在有什么更好的吗?

这是临时表的问题,您应该使用表值函数。

您指的是在其会话范围内创建的临时表,然后在其他地方使用(在一个进程中创建,然后在另一个进程中使用)?或者这是一个过程中的全部?这些临时表几乎用作存储过程的“不可见输入”,在调用此存储过程之前创建,并且仅由调用的存储过程修改。事实上,这可能是一种非常令人讨厌的“模式气味”,因为很难说这个存储过程希望作为预状态存在什么。我不太喜欢它,但这是我必须在里面工作的东西。更糟糕的是,创建临时表的应用程序是目前唯一为临时表定义模式的地方。我在找一个
——#pragma
或者…我在Microsoft
social.msdn
网站上问了同样的问题:你有没有可能改变传递一个表值类型而不是“不可见的临时表输入”?不太可能。我不能随意修改系统的所有非SQL模式区域(生成SQL临时表作为其内部编码结构的一部分的本机代码,它恰好与存储过程使用的表匹配,这实际上严重违反了db模式封装)。这是正确的。微软可能无法安全地实现临时表系统。