如何解决对象的所有者问题

在ASP中连接数据库,所采用的代码如下:
Set conn=server.createobject("ADODB.connection")
str="Provider=SQLOLEDB;Data Source=127.0.0.1;User ID=sa;Password=;Initial Catalog=nnsxdz;"
application("conn")=str
End Sub

当user=sa时,出现错误为
/gxgw/manager/config_index.asp, 第 55 行
错误原因:对象名 'chanpin' 无效。

对象名其实就是SQL表中的字段chanpin,明明存在,出现这个错误,参考了一下baidu,主要是说用户无权限打开数据库或表中挥凶侄?表中明显有这个字段,就是不能出现.

当userid=计算机管理员名dezai时,就出现
错误原因:用户 'dezai' 登录失败。

dezai在数据库中有全部权限,是计算机用户名.不可能出现失败的,密码为30756159,还是这样
Set conn=server.createobject("ADODB.connection")
str="Provider=SQLOLEDB;Data Source=127.0.0.1;User ID=dezai;Password=30756159;Initial Catalog=nnsxdz;"
application("conn")=str

在查找CSDN相关贴后,说是要在安全性设置两种身份验证windows和SQLserver,按要求设置后,仍然不能解决错误!望大家帮帮忙!先谢谢各位了!

---------------------------------------------------------------

1. 关于登录失败的问题.
在查询分析器中去登录,如果失败,检查身份验证模式
企业管理器--右键sql实例--属性--安全性
并且检查用户名和密码,最好重新设置一次密码,以确保密码未被非法修改过

2. 用sa登录无法访问 chanpin 的问题.
该问题应该是对象的所有者造成的, chanpin 的所有都不是dbo的话,用sa登录,必须使用 所有者名.chanpin 的访问方式
建议将其所有者改为dbo
exec sp_changeobjectowner 'chanpin','dbo'
---------------------------------------------------------------

--下面的代码将所有表的所有者改为dbo(仅修改所有者不是dbo的)
--将下面的代码在查询分析器中执行,修改修改库名

use 你的库名
go

declare tb cursor local
for
select 'sp_changeobjectowner '
+quotename(
+quotename(user_name(uid))
+'.'+quotename(name),'''')
+',''dbo'''
from sysobjects
where objectproperty(id,N'isusertable')=1
and uid<>user_id('dbo')
declare @s nvarchar(4000)
open tb
fetch tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch tb into @s
end
close tb
deallocate tb

Published At
Categories with 数据库类
comments powered by Disqus