sqlserver批量更改表架构

我们在使用云端的数据库时,因为使用的都是非sa用户登录,直接创建出来的表名称前都会带上一个你的用户名,如zhangsan.表名。

当我们下载备份在本地还原数据库时,往往会出现无法读取表的情况,因为本地并没有“zhangsan”这个用户及其相关的功能权限。

最简单的办法是批量将本地数据库中所有的表架构更改为“dbo",操作方法如下:

1、使用sa登录,定于到当前数据库,进行查询分析使用如下的语句,执行后将创建相关的待执行sql语句(来源于网络):

declare @name sysname

 declare csr cursor

   for select TABLE_NAME from INFORMATION_SCHEMA.TABLES

open csr

  FETCH NEXT FROM csr INTO @name

while (@@FETCH_STATUS=0)

BEGIN

SET @name='原构架名.' + @name

print 'ALTER SCHEMA 新构架名 TRANSFER ' + @name

fetch next from csr into @name

END

CLOSE csr

DEALLOCATE csr

2、执行以上语句后,根据你的表数量,会得到待执行的SQL语句,copy到查询分析器中,执行即可。

     如果遇到如下情况:因为文件组 'PRIMARY' 已满,可以在此数据库右键”属性--文件“中为此数据库添加一个相应的数据文件或日志文件,确定后,即可执行。


以上在测试环境sqlserver2008R2验证通过。


发布了28 篇原创文章 · 获赞 13 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/hyb3280660/article/details/80651378