sql2k非常用重要操作

本文介绍三种方法来更改 SQL Server 中对象的所有者:使用 sp_changeobjectowner 存储过程、自定义存储过程 ChangeObjectOwner 和 sp_MSforeachtable 进行批量更改。此外,还提供了一个用于获取所有用户表结构的存储过程。


sql2k非常用操作

 

1.更改物件的擁有者

方法1.使用sp_changeobjectowner修改單個物件
exec sp_changeobjectowner '要改的表名','dbo'

 

方法2.自定義存儲過程ChangeObjectOwner修改單個擁有者
CREATE PROCEDURE dbo.ChangeObjectOwner
@OldOwner as NVARCHAR(128),--参数原所有者
@NewOwner as NVARCHAR(128)--参数新所有者
AS

DECLARE @Name   as NVARCHAR(128)
DECLARE @Owner as NVARCHAR(128)
DECLARE @OwnerName as NVARCHAR(128)

DECLARE curObject CURSOR FOR
select 'Name'   = name,
'Owner'   = user_name(uid)
from sysobjects
where user_name(uid)=@OldOwner
order by name

OPEN curObject
FETCH NEXT FROM curObject INTO @Name, @Owner
WHILE(@@FETCH_STATUS=0)
BEGIN  
if @Owner=@OldOwner
begin
set @OwnerName = @OldOwner + '.' + rtrim(@Name)
exec sp_changeobjectowner @OwnerName, @NewOwner
end

FETCH NEXT FROM curObject INTO @Name, @Owner
END

close curObject
deallocate curObject
GO


方法3.使用sp_MSforeachtable修改所有表的擁有者
這是一個未公開的存儲過程.在master中,其源代碼如下:
create proc sp_MSforeachtable
 @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)

 /* Create the select */
   exec(N'declare hCForEach cursor global for select ''['' + REPLACE(user_name(uid), N'']'', N'']]'') + '']'' + ''.'' + ''['' + REPLACE(object_name(id), N'']'', N'']]'') + '']'' from dbo.sysobjects o '
         + N' where OBJECTPROPERTY(o.id, N''IsUserTable'') = 1 ' + N' and o.category & ' + @mscat + N' = 0 '
         + @whereand)
 declare @retval int
 select @retval = @@error
 if (@retval = 0)
  exec @retval = sp_MSforeach_worker @command1, @replacechar, @command2, @command3

 if (@retval = 0 and @postcommand is not null)
  exec(@postcommand)

 return @retval

GO

調用:
EXEC sp_MSforeachtable 'exec sp_changeobjectowner ''?'',''dbo'' '

 

2.查找所有表結構

CREATE PROCEDURE [dbo].[spGetUserTable] AS
--取得用戶表結构信息
BEGIN
SELECT
 表名=case when a.colorder=1 then d.name 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.xtype=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 sysproperties g on a.id=g.id and a.colid=g.smallid 
order by a.id,a.colorder
END
GO

 

 

 

数据库软件SQL2000和SP4补丁集成版本,可应用于数据库开发等应用。Microsoft SQL Server 2000 Service Pack 4 概述 更新信息:Microsoft 在 SP4 的最终内部版本中发现了一个问题,如果用户在运行 SQL Server 时启用了 AWE 支持功能,就会受到该问题的影响。此问题对 ia64 平台没有影响。在 x86 和 x64 系统上,该问题只会影响符合以下条件的用户:已经启用 AWE 并占用了超出 2 GB 的内存(仅适用于 Enterprise、Developer 和 Evaluation 版本);系统的一大半总内存分配给单个 SQL Server 实例。具有此配置的用户应在升级到 SP4 之后获取并应用 Microsoft 知识库的文章 899761 中指定的修补程序。 SP4 是一个累积的 Service Pack,包含以前各 Service Pack 版本中的所有修补程序,其中包括 MS03-031 安全公告。 SP4 包含以下 SQL Server 2000 组件的程序包: 数据库组件(67.1MB)(下载文件:SQL2000-KB884525-SP4-x86.EXE) 更新 SQL Server 2000 的 32 位数据库组件,包括数据库引擎、复制、客户端连接组件和工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm Analysis Services 组件(44.6 MB)(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE): 更新 SQL Server 2000 的 32 位 Analysis Services 组件。有关其他信息,请参阅 ReadmeSql2k32ASp4.htm。 SQL Server 2000 Desktop Engine (MSDE) 组件(80.2 MB)(下载文件:SQL2000.MSDE-KB884525-SP4-x86.EXE): 对于 SQL Server 2000 的 32 位 MSDE 组件: 安装 MSDE 的新实例 升级 MSDE 的现有实例 更新已使用合并模块的应用程序 有关其他信息,请参阅 ReadmeSql2k32DeskSp4.htm SQL Server 2000 64 位组件(下载文件:SQL2000-KB884525-SP4-ia64.EXE): 更新 SQL Server 2000 的 64 位数据库组件和 64 位 Analysis Services 组件。有关其他信息,请参阅 ReadmeSql2k64Sp4.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值