本地 SQL Server:找不到指定的过程
Posted
技术标签:
【中文标题】本地 SQL Server:找不到指定的过程【英文标题】:Local SQL Server: The specified procedure could not be found 【发布时间】:2013-06-08 15:48:51 【问题描述】:几天前我的电脑上出现了这个问题,我没有对 Visual Studio/SQL Server 设置进行任何更改。
尝试在 Visual Studio 中对数据库文件 (*.mdf) 执行任何手动操作时,我收到以下错误:
找不到指定的过程。 (HRESULT 异常:0x8007007F)
(例如,尝试创建新表时,或显示现有表的数据时)
我该如何解决这个错误?
【问题讨论】:
请确认您使用的是哪个版本的 SQL Server Express - 2005、2008、2008R2、2012 等。您也说过这是您的本地数据库,但请确认您对数据库的权限级别您正在使用的凭据? 我的版本是2008R2。关于权限级别,我不确定如何确定。但是,这似乎不是问题 - 我得到了同样的错误,即使是在一个全新的项目中...... 您正在运行什么版本的 Windows,您最近是否安装了服务包? 【参考方案1】:确保您或其他人没有更改您对主人的权利。为了添加任何东西,一条记录被添加到该表中。
附录: 您可以运行以下脚本来确定谁拥有哪些权限以及它们是隐式的还是显式的。
WITH perms_cte as
(
select USER_NAME(p.grantee_principal_id) AS principal_name,
dp.principal_id,
dp.type_desc AS principal_type_desc,
p.class_desc,
OBJECT_NAME(p.major_id) AS object_name,
p.permission_name,
p.state_desc AS permission_state_desc
from sys.database_permissions p
inner JOIN sys.database_principals dp
on p.grantee_principal_id = dp.principal_id
)
--users
SELECT p.principal_name, p.principal_type_desc, p.class_desc, p.[object_name], p.permission_name, p.permission_state_desc, cast(NULL as sysname) as role_name
FROM perms_cte p
WHERE principal_type_desc <> 'DATABASE_ROLE'
UNION
--role members
SELECT rm.member_principal_name, rm.principal_type_desc, p.class_desc, p.object_name, p.permission_name, p.permission_state_desc,rm.role_name
FROM perms_cte p
right outer JOIN (
select role_principal_id, dp.type_desc as principal_type_desc, member_principal_id,user_name(member_principal_id) as member_principal_name,user_name(role_principal_id) as role_name--,*
from sys.database_role_members rm
INNER JOIN sys.database_principals dp
ON rm.member_principal_id = dp.principal_id
) rm
ON rm.role_principal_id = p.principal_id
order by 1
--- thanks to Jamie Thomson for this ditty
还有一些建议;
使用分析器跟踪呼叫并确认您以您认为的用户身份连接 - sp_who2 可能是另一种验证方式。
验证您的进程是否在正确的数据库中。使用 c# 连接并运行 SELECT DB_NAME() - 将结果写入您可以阅读以确认的位置。
如果这适用于一种环境而不是另一种环境,我会强烈怀疑连接字符串。
检查您的 SQL 日志中是否报告了身份验证错误。这些再次表明可能存在连接问题。
【讨论】:
我认为我没有改变任何东西。我如何保证这一点? 我在帖子中添加了一些代码。执行“USE master”并运行脚本。 一个至少可以帮助您指出正确方向的摘要是msdn.microsoft.com/en-us/library/ms189121.aspx【参考方案2】:关于此错误的传统看法是,它可能反映了丢失或损坏的 DLL(在 SQL Server 或 Visual Studio 中)。并且 SOP 是重新安装,尽管这似乎并不总是有效。
【讨论】:
问题出在VS本身,运行项目时,数据库运行成功。我重装了VS,问题依旧。【参考方案3】:尝试以管理员身份运行 Visual Studio
右键单击 Visual Studio --> 以管理员身份运行。
【讨论】:
【参考方案4】:尝试连接到 SQL Server Management Studio 中的数据库。这至少会缩小它是否是数据库权限问题或其他问题。此外,检查以确认数据库存在并且您有权访问它。 (就像乔建议的那样。)
假设检查...我的谷歌搜索发现了一个听起来非常相似的问题。他说 Adel 建议的 runas 管理员的东西对他有用,但还有其他问题也可能导致错误消息,包括 VS 无法找到 Web 应用程序项目文件中指定的 IIS 虚拟服务器(权限?重命名?) .确认该文件存在并且您有权访问它。
http://connect.microsoft.com/VisualStudio/feedback/details/317124/system-runtime-interopservices-comexception-in-webapplication-project
【讨论】:
以上是关于本地 SQL Server:找不到指定的过程的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server连接本地数据库时系统找不到指定的文件,配置管理器无法连接到 WMI 提供程序
错误 175:在配置中找不到指定的存储提供程序 - Sql Server CE
本地计算机无法启动server服务 错误126:找不到指定的模块
使用 ssis 包在 SQL Server 代理作业中找不到存储过程错误