最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

刷新SQLServer所有视图、函数、存储过程

来源:懂视网 责编:小采 时间:2020-11-09 16:13:11
文档

刷新SQLServer所有视图、函数、存储过程

刷新SQLServer所有视图、函数、存储过程:此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 无 --视图、存储过程、函数名称DECLARE @NAME NVARCHAR(255);--局部游标DECLARE @CUR CURSOR --自动修改未上状态为旷课SET @CUR=CURSOR SCROLL DYN
推荐度:
导读刷新SQLServer所有视图、函数、存储过程:此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 无 --视图、存储过程、函数名称DECLARE @NAME NVARCHAR(255);--局部游标DECLARE @CUR CURSOR --自动修改未上状态为旷课SET @CUR=CURSOR SCROLL DYN

此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 无 --视图、存储过程、函数名称DECLARE @NAME NVARCHAR(255);--局部游标DECLARE @CUR CURSOR --自动修改未上状态为旷课SET @CUR=CURSOR SCROLL DYNAMIC FOR SELECT NAME FROM

此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。

<无> $velocityCount-->
--视图、存储过程、函数名称
DECLARE @NAME NVARCHAR(255);
--局部游标
DECLARE @CUR CURSOR 
--自动修改未上状态为旷课
SET @CUR=CURSOR SCROLL DYNAMIC FOR 
SELECT NAME FROM DBO.SYSOBJECTS 
	WHERE NAME NOT IN ('SYSCONSTRAINTS','SYSSEGMENTS')
	AND
	(
	OBJECTPROPERTY(ID, N'IsView') = 1	--视图
	OR OBJECTPROPERTY(ID,N'IsProcedure') = 1	--存储过程
	OR OBJECTPROPERTY(ID,N'IsScalarFunction') = 1	--标量函数
	OR OBJECTPROPERTY(ID,N'IsTableFunction') = 1	--标题函数
	OR OBJECTPROPERTY(ID,N'IsInlineFunction') = 1	--内联函数
	);

OPEN @CUR;
FETCH NEXT FROM @CUR INTO @NAME

WHILE (@@FETCH_STATUS=0)
BEGIN

	DECLARE @OldText NVARCHAR(MAX);
	DECLARE @NewText NVARCHAR(MAX);

	--读取创建脚本,当脚本超长时分成多条记录时合并
	SELECT @OldText=@OldText + CHAR(10) + CHAR(13) + RTRIM(TEXT) FROM SYSCOMMENTS WHERE ID = OBJECT_ID(@NAME);

	--将创建脚本替换为更新脚本
	SET @NewText=REPLACE(@OldText,N'CREATE VIEW',N'ALTER VIEW');
	SET @NewText=REPLACE(@NewText,N'CREATE PROCEDURE',N'ALTER PROCEDURE');
	SET @NewText=REPLACE(@NewText,N'CREATE FUNCTION',N'ALTER FUNCTION');
	
	BEGIN TRY
	EXEC(@NewText);
	END TRY
	BEGIN CATCH
	PRINT N'---------------------------------------------------------------------------';
	PRINT @NAME + N' : ' + ERROR_MESSAGE();
	--PRINT @OldText;
	PRINT N'---------------------------------------------------------------------------';
	END CATCH

	FETCH NEXT FROM @CUR INTO @NAME

END

CLOSE @CUR;
DEALLOCATE @CUR;
CREATE PROCEDURE RefreshAllView AS
DECLARE MyCursor CURSOR
FOR select Name from dbo.sysobjects where OBJECTPROPERTY(id, N'IsView') = 1 and (not name in ('sysconstraints','syssegments'))

DECLARE @name varchar(40)
OPEN MyCursor

FETCH NEXT FROM MyCursor INTO @name
WHILE (@@fetch_status <> -1)
BEGIN
 IF (@@fetch_status <> -2)
 begin
 exec sp_refreshview @name
 end
 FETCH NEXT FROM MyCursor INTO @name
END

CLOSE MyCursor
DEALLOCATE MyCursor
select name from sysobjects where xtype='TR' --所有触发器
select name from sysobjects where xtype='P' --所有存储过程
select name from sysobjects where xtype='V' --所有视图
select name from sysobjects where xtype='U' --所有表
SELECT
表名=case when a.colorder=1 then d.name else '' end,
表说明=case when a.colorder=1 then isnull(f.value,'') else '' end,
字段序号=a.colorder,
字段名=a.name,
标识=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end,
主键=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
SELECT name FROM sysindexes WHERE indid in(
SELECT indid FROM sysindexkeys WHERE id = a.id AND colid=a.colid
))) then '√' else '' end,
类型=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case when a.isnullable=1 then '√'else '' end,
默认值=isnull(e.text,''),
字段说明=isnull(g.[value],'')
FROM syscolumns a
left join systypes b on a.xusertype=b.xusertype
inner join sysobjects d on a.id=d.id and d.xtype='U' and d.name<>'dtproperties'
left join syscomments e on a.cdefault=e.id
left join sys.extended_properties g on a.id=g.major_id and a.colid=g.minor_id
left join sys.extended_properties f on d.id=f.major_id and f.minor_id=0
--where d.name='course' --如果只查询指定表,加上此条件
order by a.id,a.colorder
Select o.Name As ObjectsName , c.name As ColumnsName , t.name As ColumnsType , c.length As ColumnsLength
From SysObjects As o , SysColumns As c , SysTypes As t
Where o.type in ('u','v') And o.id = c.id And c.xtype = t.xtype
Order By o.name , c.name , t.name , c.Length

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

刷新SQLServer所有视图、函数、存储过程

刷新SQLServer所有视图、函数、存储过程:此脚本用于在删除或添加字段时刷新相关视图,并检查视图、函数、存储过程有效性。 无 --视图、存储过程、函数名称DECLARE @NAME NVARCHAR(255);--局部游标DECLARE @CUR CURSOR --自动修改未上状态为旷课SET @CUR=CURSOR SCROLL DYN
推荐度:
标签: 过程 所有 刷新
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top