来自 澳门威尼斯人注册网站 2020-04-29 04:02 的文章
当前位置: 澳门威尼斯人平台 > 澳门威尼斯人注册网站 > 正文

sqlserver 此数据库没有有效所有者错误的解决方法

declare @delStr nvarchar(500) set @delStr='script src=' --这里被注入的字段串 /****************************************/

复制代码 代码如下: declare @delStr nvarchar(500) set @delStr='script src=' --这里被注入的字段串 /****************************************/ /**********以下为操作实体************/ set nocount on declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int declare @sql nvarchar(2000) set @iResult=0 declare cur cursor for select name,id from sysobjects where xtype='U' open cur fetch next from cur into @tableName,@tbID while @@fetch_status=0 begin declare cur1 cursor for select name from syscolumns where xtype in (231,167,239,175, 35, 99) and id=@tbID open cur1 fetch next from cur1 into @columnName while @@fetch_status=0 begin set @sql='update [' + @tableName + '] set ['+ @columnName +']= SUBSTRING([' + @columnName + '],' + '1, PATINDEX( ''%' + @delStr + '%'', [' + @columnName + '])-1) + ' + 'SUBSTRING([' + @columnName + '], PATINDEX( ''%' + @delStr + '%'', [' + @columnName + ']) + ' + 'len(''' + @delStr + ''') , datalength([' + @columnName + '])) where ['+@columnName+'] like ''%'+@delStr+'%''' exec sp_executesql @sql set @iRow=@@rowcount set @iResult=@iResult+@iRow if @iRow0 begin print '表:'+@tableName+',列:'+@columnName+'被更新'+convert(varchar(10),@iRow)+'条记录;' end fetch next from cur1 into @columnName end close cur1 deallocate cur1 fetch next from cur into @tableName,@tbID end print '数据库共有'+convert(varchar(10),@iResult)+'条记录被更新!!!' close cur deallocate cur set nocount off

数据库教程没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用数据库属性对话框的文件页或Alter AUTHORIZATION语句将数据库所有者设置为有效登录名,然后再添加数据库关系图支持对象。 按照第一种方式更改怎么也不行,并且文件的所有者也是sa。在csdn中找了半天,有个同志给出了第二种解法,使用ssms。具体在SSMS中运行以下命令: Alter AUTHORIZATION ON database::mydbname TO sa 把mydbname修改为实际的数据库名称,就可以把所有者设置为sa了。 经过一番努力也没找到ssms[呵呵,我在新建查询里执行成功,但没解决问题],哎。这个也泡汤了。心中有了重新格系统的想法。 想象一下格系统的麻烦,随后有百度。在一个论坛中发现了这样的解决办法: 解决方法如下: 1、设置兼容级别为90 USE [master] GO EXEC dbo.sp_dbcmptlevel @dbname='数据库名', @new_cmptlevel=90 GO [这条命令执行完毕:报DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系,不管它哦,接下来点击数据库关系图,报此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建,选择是,问题解决了] 或是选择你还原的数据库,点右键,选属性-选项-兼容级别,选择sqlserver2005(90) 然后确定。 这时,你在该数据库下展开数据库关系图节点时会有个提示,此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建,选择是即可。 2、通过以上的方法操作,如果问题依然存在的话,按下列方法继续 选择你的数据库,然后选择安全性-用户,选择dbo,打开属性页,如登录名为空的话,新建查询,然后 use [你的数据库名] EXEC sp_changedbowner 'sa' 执行成功后,你再选择数据库关系图节点,时提示 此数据库缺少一个或多个使用数据库关系图所需的支持对象,是否创建,选择是即可。 就可以看到原先建的关系图了。 呵呵。费了很大劲才完成,呵呵。原因可能是,原来的数据库使用sql server2000创建的。把数据库附加到2005上后,解析不了了。

/**********以下为操作实体************/ set nocount on

declare @tableName nvarchar(100),@columnName nvarchar(100),@tbID int,@iRow int,@iResult int declare @sql nvarchar(2000)

set @iResult=0 declare cur cursor for select name,id from sysobjects where xtype='U'

本文由澳门威尼斯人平台发布于澳门威尼斯人注册网站,转载请注明出处:sqlserver 此数据库没有有效所有者错误的解决方法

关键词: