ÏñÒÔÏÂͼÏÔʾ8.00.760(SP3)˵Ã÷ÒѾ´ò¹ý²¹¶¡¡£Èç¹ûÄúµÄÆóÒµ¹ÜÀíÆ÷ÏÔʾµÄ°æ±¾Òª±ÈÕâ¸öС£¬ÄǾÍÊÇû´òSP3²¹¶¡¡£
Çë°²×°SQL Server SP3²¹¶¡ºóÔÙÖØÊÔ¡£
ͼ16:
´íÎóÔÒò¶þ¡¢¶ÔÏóÊôÐÔ³åÍ»
Èç¹û³öÏÖͼ17Çé¿ö£¬ÄÇôӦ¸Ã¾ÍÊÇÄú±¾µØÊý¾Ý¿âµÄ±í/ÊÓͼ/´æ´¢¹ý³ÌµÄÊôÖ÷ºÍ·þÎñÆ÷ÉÏÊý¾Ý¿âĬÈÏÓû§²»Ò»Ö¡£
·þÎñÆ÷µÄÓû§Ò»°ãÊÇ£ºÊý¾Ý¿âÃû+'_f'£¬ÈçÎÒµÄÊý¾Ý¿âÃû³ÆÊÇtestdb£¬ÔòÎÒÔÚ·þÎñÆ÷ÉÏʹÓõÄÊý¾Ý¿âÓû§Ãû¾ÍÊÇtestdb_f¡£
Èçͼ18£¬ÎÒ±¾µØµÄ±íÊôÖ÷ÊÇtestuser£¬Óë·þÎñÆ÷Êý¾Ý¿âÓû§Ãû²»Ò»Ö£¬Òò´Ëµ¼Èë¹ý³Ì³ö´í¡£
ͼ17:
ͼ18:
½â¾ö·½·¨ÊÇ£º
Ó¦¸ÃÏȰѱ¾µØµÄËùÓбí/ÊÓͼ/´æ´¢¹ý³ÌÊôÖ÷¶¼¸ÄΪdbo»òtestdb_f(ºóÕßÐèÒªÔÚ±¾µØ´´½¨ÆðÏàÓ¦Óû§¡£
½¨Òé´´½¨£¬·ñÔòÒÔºóÏë´Ó·þÎñÆ÷Éϵ¼³öÊý¾ÝʱͬÑù»áÒòΪÕâ¸öÎÊÌâµ¼³ö´íÎó)£¬ÔÙÖØнøÐе¼Èë/µ¼³ö¡£
´ò¿ªSQL²éѯ·ÖÎöÆ÷£¬ÔËÐÐÒÔÏÂÃüÁî½øÐÐÅúÁ¿Ð޸ıíÊôÖ÷Ϊdbo:
exec sp_MSForEachTable 'sp_changeobjectowner "?", "dbo"'
ÔËÐгɹ¦ºó±íÊôÖ÷»á¸Ä±ä³ÉÈçͼ19:
ͼ19:
Èç¹ûÐèÒªÐÞ¸ÄÊÓͼ/´æ´¢¹ý³Ì£¬ÔòÂé·³Á˵㡣
ÏÂÃæÓиö·½·¨¿ÉÒÔʵÏÖ£º
Ò»¡¢ÏÈÔÚmaster´´½¨Ò»¸ösp_MSforeachObject´æ´¢¹ý³Ì£¬ÃüÁîÈçÏ£º
USE MASTER
GO
CREATE proc sp_MSforeachObject
@objectType int=1,
@command1 nvarchar(2000),
@replacechar nchar(1) = N'?',
@command2 nvarchar(2000) = null,
@command3 nvarchar(2000) = null,
@whereand nvarchar(2000) = null,
@precommand nvarchar(2000) = null,
@postcommand nvarchar(2000) = null
as
/* This proc returns one or more rows for each table (optionally, matching @where), with each table defaulting to its
own result set */
/* @precommand and @postcommand may be used to force a single result set via a temp table. */
/* Preprocessor won't replace within quotes so have to use str(). */
declare @mscat nvarchar(12)
select @mscat = ltrim(str(convert(int, 0x0002)))
if (@precommand is not null)
exec(@precommand)
/* Defined @isobject for save object type */
Declare @isobject varchar(256)
select @isobject= case @objectType when 1 then 'IsUserTable'
when 2 then 'IsView'
when 3 then 'IsTrigger'
when 4 then 'IsProcedure'
when 5 then 'IsDefault'
when 6 then 'IsForeignKey'
when 7 then 'IsScalarFunction'
when 8 then 'IsInlineFunction'
when 9 then 'IsPrimaryKey'
when 10 then 'IsExtendedProc'