行业报告 AI展会 数据标注 标注供求
数据标注数据集
主页 > 技术社区 > 数据库 > 正文

SQLServer 对象创建注意事项之dbo

最近,一客户遇到一个奇怪的问题,sqlserver数据库,使用备份恢复到目标机器。之后,在目标服务器创建了测试函数对象,但是执行查询的时候却提示对象不存在,再次尝试重新创建该函数及其依赖的对象时能正常执行。经过仔细检查发现登陆操作的用户拥有的默认架构是db_owner,检查创建的数据库下的相关函数显示db_owner.func_name,当查询语句引用对象加上db_owner.func_name时可以执行正常执行查询。后来在创建函数及其依赖的对象时加上dbo.func_name,再次执行查询可以正常执行。

 

      一、问题现象

       在sqlserver数据库中创建了测试函数对象,但是执行查询的时候却提示对象不存在:

 

      再次尝试重新创建该函数及其依赖的对象时,没有发现任提示报错:

 

 

    二、问题分析

    查看指定数据库下该函数的位置情况,发现其在db_owner下:

    尝试执行select * from db_owner.Fn_GetQuestion……能正常执行查询:

后经过查看执行操作的用户的默认架构是db_owner。

    三、问题处理

    将函数及其依赖的对象删除,在对象名称前添加dbo.前缀后再次执行创建,程序测试查询恢复正常。

    四、总结

    sqlserver数据库与其他数据库不一样,其数据库对象默认存放在dbo方案下,程序执行解析时也是默认在dbo方案下查找,当类似本案例的函数或者表对象创建没有添加dbo.前缀时,创建的对象就可能放在其他方案下,导致程序执行解析出现异常。

因此,使用sqlserver数据库时,创建表或者函数等对象,最好养成显示添加dbo.前缀。

微信公众号

声明:本站部分作品是由网友自主投稿和发布、编辑整理上传,对此类作品本站仅提供交流平台,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,不为其版权负责。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。

网友评论:

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
SEM推广服务

Copyright©2005-2026 Sykv.com 可思数据 版权所有    京ICP备14056871号

关于我们   免责声明   广告合作   版权声明   联系我们   原创投稿   网站地图  

可思数据 数据标注行业联盟

扫码入群
扫码关注

微信公众号

返回顶部