Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Sql server 有没有办法解决SQL Server延迟名称解析的问题?_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 有没有办法解决SQL Server延迟名称解析的问题?

Sql server 有没有办法解决SQL Server延迟名称解析的问题?,sql-server,stored-procedures,Sql Server,Stored Procedures,我刚刚在我们的测试环境中部署了一个新的存储过程,但由于测试系统不包含存储过程所依赖的表,所以在执行时失败了。我相信这是由于 问题是,我觉得在过去的一些时候,我曾试图创建由于缺少依赖项而失败的存储过程。不过我可能错了 无论如何,在创建存储过程中,是否可能以某种方式强制执行名称解析?如果是这样的话,有没有办法让它与sqlcmd以及SSMS一起工作 通过这种方式,我们可以在脚本的首次执行时发现缺少的依赖项 顺便说一句,我有兴趣阅读关于延迟决议如何运作的这一显而易见的信息 编辑:我们有一个2005/20

我刚刚在我们的测试环境中部署了一个新的存储过程,但由于测试系统不包含存储过程所依赖的表,所以在执行时失败了。我相信这是由于

问题是,我觉得在过去的一些时候,我曾试图创建由于缺少依赖项而失败的存储过程。不过我可能错了

无论如何,在创建存储过程中,是否可能以某种方式强制执行名称解析?如果是这样的话,有没有办法让它与sqlcmd以及SSMS一起工作

通过这种方式,我们可以在脚本的首次执行时发现缺少的依赖项

顺便说一句,我有兴趣阅读关于延迟决议如何运作的这一显而易见的信息


编辑:我们有一个2005/2008的混合版本(我无法控制),所以我需要一个2005年的解决方案来处理这两个实例。

您可以使用SCHEMABINDING调查
,但由于Damien链接到的connect项的注释中指出的原因,这可能不适用于您

如果在SQLServer2008上,您还可以查看
sys.SQL\u expression\u依赖项

CREATE PROC bar
AS
SELECT * 
FROM DoesNotExist 
JOIN AlsoDoesNotExist ON 1=1

GO

CREATE TABLE DoesNotExist
(
X INT
)
GO

SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,
       referenced_entity_name
FROM sys.sql_expression_dependencies 
WHERE referenced_id IS NULL
返回

referencing_entity_name        referenced_entity_name
------------------------------ ------------------------------
bar                            AlsoDoesNotExist

你可以投票赞成,但似乎没有太多的行动(除了upvotes),也没有列出解决办法。请在最后一段中说明SQL Server的版本,我不确定人们是否正在阅读和理解整个MSDN文档。它并没有说它会在启动前出错,而是说“如果存储过程在执行时引用的对象丢失,则存储过程在到达引用丢失对象的语句时停止执行。”(我的重点)@Martin。我编辑了这篇文章以反映所使用的版本(2005)。@Damien_the_unsiever:感谢链接和MSDN doco上的澄清。谢谢你的想法。我明天会查看它们。我只是在做一些关于在过程中使用SCHEMABINDING的研究。从我所读到的内容来看,我认为SCHEMABINDING目前不适用于存储过程。Damien发布的链接中的评论似乎表明,如果在将来的某个版本中,SCHEMABINDING作为存储过程的选项提供,那么它可能是不受欢迎的。您是否认为,除了在执行时之外,2005年不可能进行过程依赖性检查?在我上面的评论之后,似乎sp_refreshsqlmodule的MSDN doco指的是“…非模式绑定存储过程…”,因此我关于存储过程模式绑定的假设可能不正确。如果是这样,您对所需的语法有什么想法吗?我试过了;创建过程[dbo].[TGA_SB1],SCHEMABINDING为BEGIN SELECT*FROM NOTHE HERE END GO,但它不起作用。