为什么SQL中新建立的表格,在asp.net中需要在SQL语句里面加上“数据库ming.dbo.表名”才可以访问,否则提示表对象无效?

问题遇到的现象和发生背景

img

问题相关代码,请勿粘贴截图

数据库的链接字符串代码:

<add key="Conn" value="database=DeyuMS_gd_fs_smzx;uid=sa;pwd=1;server=pctmouse\SQLEXPRESS2008;" />

img

运行结果及报错内容

需要说明的是,数据库连接字符串在web.config里是写好了的,之前也一直是好的,就现在添加了新表后,就只有新表出现这样的情况,访问旧表是没有这样的情况的。

img

我的解答思路和尝试过的方法

百度了很久,没办法解决

我想要达到的结果

实现正常访问

这跟你写的connString有关。
你的链接语句有:DataBase="数据库ming"
则可以之间直接访问表名。
如果链接语句没有指向库,则需要带上库名。
你的链接语句很明显没有指向库。
望采纳

数据库选它了吗

跨库连表的时候就是需要指定库名的

执行sql时首先要确认是在哪个库中执行,因为一个ip下可能对应多个库,如果不添加库名,不知道你是插入到哪个库中的表上,还有一种方法是你直接打开对应的库,然后在当前库下执行,此时sql时可以不用添加库名

如果没有跨库查询需求的话,代码里的数据库连接字符串里面 指定数据库名称就不用了前缀了

img

同楼上,连接字符串需要指定数据库名。

库名.dbo.表名

1.作用:
(1)DBO是每个数据库的默认用户,具有所有者权限,即DbOwner;
通过用DBO作为所有者来定义对象,能够使数据库中的任何用户引用而不必提供所有者名称。
(2)至于为什么要使用所有者进行限定,是因为不同的用户可能创建同名的对象,例如登录名me和登录名you在pubs数据库中分别创建了用户名me,和 you,这二个用户都创建了
testtable这个同名表,而这二个表虽然同名但结构或数据可能完全不同,为了避免调用错误,必须使用所有者名称进行限定.
2.举例:
比如:你以User1登录进去并建表Table,而未指定DBO,当用户User2登进去想访问Table时就得知道这个Table是你User1建立的,要写上User1.Table,如果他不知道是你建的,则访问会有问题。
如果你建表时把所有者指给了Dbo,则别的用户进来时写上Dbo.Table就行了,不必知道User1。
3.扩展:
怎样来调用别的用户创建的对象呢?例如me用户访问you用户创建的表或访问dbo创建的表.此种情况,必须同时满足二个条件:
(1)将me用户的数据库角色设置为db_owner,否则无法访问其他用户(包括dbo用户)创建的对象.(企业管理器-> 用户,右键菜单 <属性> 中设置)
(2)使用所有者进行限定.
例如me访问you创建的testtable:
select * from you.testtable
不光表是如此,视图等等数据库对象建立时也要如此才算是好。

你好,
你再创一个新的试试呢?看看是否还有同样问题。 你在创新表的时候做了什么操作? 清除浏览器缓存,然后连接旧表,看运行结果。