新找了rainbow来做公司的门户,使用起来还算可以,但是是在我的测试机器上。突然想起来如何才能把握的测试结果或者以后的开发实例搬到新的服务器上。数据迁移阿。本以为是普通的asp程序,原搬就可以,后来想到好多东西他都是和sharepoint一样配置在数据库中,于是把他们一同restore到新的机器上。没有什么异样,但是运行网站的时候他会监测出是新的数据库。需要重新运行脚本。但是完全失败!!!头疼。他不像sharepoint那样有自己的备份命令。!!!这样开始查阅了官方网站。上面只是说要backup然后restore。看来原来import是不起作用的阿。
这样我又重新back一次。还是失败。无意中我看到了How to make an SQL readable backup 文章,下面有个连接如何更改dbowner的这才启发我,需要更改这个。试验一下,将aspnet的名字换了服务器的机器名。失败!!!
最后改成了dbo,这才成功!
贴出脚本文件,更改owner的时候table使用
DECLARE @oldOwner sysname, @newOwner sysname, @sql varchar(1000)

SELECT
  @oldOwner = 'PC\ASPNET'
  , @newOwner = 'dbo'
  , @sql = '
  IF EXISTS (SELECT NULL FROM INFORMATION_SCHEMA.TABLES
  WHERE
      QUOTENAME(TABLE_SCHEMA)+''.''+QUOTENAME(TABLE_NAME) = ''?''
      AND TABLE_SCHEMA = ''' + @oldOwner + '''
  )
  EXECUTE sp_changeobjectowner ''?'', ''' + @newOwner + ''''

EXECUTE sp_MSforeachtable @sql

更改存储过程的:
DECLARE @oldOwner sysname, @newOwner sysname
SELECT
@oldOwner = 'PC\ASPNET'
, @newOwner = 'dbo'
select 'EXECUTE sp_changeobjectowner '''+QUOTENAME(a.SPECIFIC_SCHEMA)+'.'+QUOTENAME(a.ROUTINE_NAME)+''','''+@newOwner+''''
from
INFORMATION_SCHEMA.ROUTINES a
where
a.ROUTINE_TYPE = 'PROCEDURE'
AND a.SPECIFIC_SCHEMA = @oldOwner
AND
OBJECTPROPERTY(OBJECT_ID(QUOTENAME(a.SPECIFIC_SCHEMA)+'.'+QUOTENAME(a.ROUTINE_NAME)), 'IsMSShipped') = 0
运行这个脚本后得到每个更改的命令。粘贴结果再次运行。

posted on 2005-12-12 11:54  Mint  阅读(1368)  评论(1)    收藏  举报