数据库教程没有有效所有者,因此无法安装数据库关系图支持对象。若要继续,请首先使用数据库属性对话框的文件页或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上后,解析不了了。

declare @text nvarchar(max);with tbas(select blocking_session_id,session_id,db_name(database_id) as dbname,text from master.sys.dm_exec_requests aCROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle)),tb1 as(select a.*,login_time,program_name,client_interface_name,login_name,cpu_time,memory_usage*8 as 'memory_usage(KB)',total_scheduled_time,reads,writes,logical_reads from tb a inner join master.sys.dm_exec_sessions bon a.session_id=b.session_id)select @text=text from tb1 a inner join master.sys.dm_exec_connections b on a.session_id=b.session_id print @text/*declare @text nvarchar(max);with tbas(select blocking_session_id,session_id,db_name(database_id) as dbname,text from master.sys.dm_exec_requests aCROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle)),tb1 as(select a.*,login_time,program_name,client_interface_name,login_name,cpu_time,memory_usage*8 as 'memory_usage(KB)',total_scheduled_time,reads,writes,logical_reads from tb a inner join master.sys.dm_exec_sessions bon a.session_id=b.session_id)select @text=text from tb1 a inner join master.sys.dm_exec_connections b on a.session_id=b.session_id print @text*/

还可以短一点:

declare @text nvarchar(max);select @text=text from master.sys.dm_exec_requests aCROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle)print @text/*declare @text nvarchar(max);select @text=text from master.sys.dm_exec_requests aCROSS APPLY master.sys.dm_exec_sql_text(a.sql_handle)print @text*/

本文章分享一篇关于解决SQL Server 2005
18452登录错误,有需要了解的朋友可以参考一下

<

法连接到服务器 服务器:消息18452, 级别16,状态1 [Microsoft][ODBC SQL
Server Driver][SQL Server]用户sa登陆失败。原因:未与信任SQL
Server连接相关联

发表评论

电子邮件地址不会被公开。 必填项已用*标注