9.更改数据库中表的所属用户的两个方法
大家可能会经常碰到一个数据库备份还原到另外一台机器结果导致所有的表都不能打开了,原因是建表的时候采用了当时的数据库用户,更改某个表:
exec sp_changeobjectowner "tablename","dbo" |
存储更改全部表:
CREATE PROCEDURE dbo.User_ChangeObjectOwnerBatch
@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
-- select @name,@NewOwner,@OldOwner
FETCH NEXT FROM curObject INTO @Name, @Owner
END
close curObject
deallocate curObject
GO |
10.SQL Server中直接循环写入数据
declare @i int
set @i=1
while @i<30
begin
insert into test (userid) values(@i)
set @i=@i+1
end |
11.无数据库日志文件恢复数据库方法两则
数据库日志文件的误删或别的原因引起数据库日志的损坏:
方法一:
1.新建一个同名的数据库;
2.再停掉SQL Server(注意不要分离数据库);
3.用原数据库的数据文件覆盖掉这个新建的数据库;
4.再重启SQL Server;
5.此时打开企业管理器时会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名);
6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用数据库的脚本创建一个新的数据库,并将数据导进去就行了。
USE MASTER
GO
SP_CONFIGURE "ALLOW UPDATES",1 RECONFIGURE WITH OVERRIDE
GO
UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME="置疑的数据库名"
Go
sp_dboption "置疑的数据库名", "single user", "true"
Go
DBCC CHECKDB("置疑的数据库名")
Go
update sysdatabases set status =28 where name="置疑的数据库名"
Go
sp_configure "allow updates", 0 reconfigure with override
Go
sp_dboption "置疑的数据库名", "single user", "false"
Go |