sql-server – 语法检查所有存储过程?
我想确保所有存储过程在语法上仍然有效. (如果有人重命名/删除表/列,则可能会发生这种情况).
现在我检查所有存储过程的语法的解决方案是进入企业管理器,选择列表中的第一个存储过程,并使用以下过程: >输入 它的作品,但它是相当乏味.我想要一个叫做的存储过程 SyntaxCheckAllStoredProcedures 像我写的其他存储过程一样,对于视图也是一样的: RefreshAllViews 为了大家的好处,RefreshAllViews: RefreshAllViews.prc CREATE PROCEDURE dbo.RefreshAllViews AS -- This sp will refresh all views in the catalog. -- It enumerates all views,and runs sp_refreshview for each of them DECLARE abc CURSOR FOR SELECT TABLE_NAME AS ViewName FROM INFORMATION_SCHEMA.VIEWS OPEN abc DECLARE @ViewName varchar(128) -- Build select string DECLARE @SQLString nvarchar(2048) FETCH NEXT FROM abc INTO @ViewName WHILE @@FETCH_STATUS = 0 BEGIN SET @SQLString = 'EXECUTE sp_RefreshView '+@ViewName PRINT @SQLString EXECUTE sp_ExecuteSQL @SQLString FETCH NEXT FROM abc INTO @ViewName END CLOSE abc DEALLOCATE abc 为了所有人的好处,存储过程将所有存储过程标记为需要重新编译(标记重新编译的存储过程将不会告诉您是否在语法上有效): RecompileAllStoredProcedures.prc CREATE PROCEDURE dbo.RecompileAllStoredProcedures AS DECLARE abc CURSOR FOR SELECT ROUTINE_NAME FROM INFORMATION_SCHEMA.routines WHERE ROUTINE_TYPE = 'PROCEDURE' OPEN abc DECLARE @RoutineName varchar(128) -- Build select string once DECLARE @SQLString nvarchar(2048) FETCH NEXT FROM abc INTO @RoutineName WHILE @@FETCH_STATUS = 0 BEGIN SET @SQLString = 'EXECUTE sp_recompile '+@RoutineName PRINT @SQLString EXECUTE sp_ExecuteSQL @SQLString FETCH NEXT FROM abc INTO @RoutineName END CLOSE abc DEALLOCATE abc 为了完整起见,UpdateAllStatistics过程.这将通过执行完整的数据扫描来更新数据库中的所有统计信息: RefreshAllStatistics.prc CREATE PROCEDURE dbo.RefreshAllStatistics AS EXECUTE sp_msForEachTable 'UPDATE STATISTICS ? WITH FULLSCAN' 解决方法你也可以这样做“就地” – 没有得到所有的创建语句.除了设置NOEXEC ON之外,您还需要设置您喜欢的SHOWPLAN_ * ON(我使用SHOWPLAN_TEXT).现在您可以摆脱步骤2,只需执行您在步骤1中检索的每个过程. 以下是使用单个存储过程的示例.您可以将其加工到您最喜欢的循环中: create procedure tests @bob int as select * from missing_table_or_view go set showplan_text on; go set noexec on exec tests set noexec off go set showplan_XML off go drop procedure tests go 上述示例应生成以下输出:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- sql-server – sql登录失败的用户X … Windows身份验证
- sql-server – 如何防止意外地使用生产数据库进行升级?
- Sqlserver数据字典
- t-sql创建用户并授予对存储过程的许可执行
- sqlserver添加数据的时候提示对象名‘updated’无效
- sql – 在postgres中的generate_series上加入计数查询,并将
- 一个优化MySQL查询操作的具体案例分析
- sql-server-2008 – 我可以将SQL Server 2008 R2备份还原到
- sql-server – SQL Server将不等于<>的行返回值和NULL
- SQLServer管理常用SQL语句