【问题标题】:Creating SQL Server Stored Procedure from Access 2007 - change schema从 Access 2007 创建 SQL Server 存储过程 - 更改架构
【发布时间】:2009-06-04 18:15:07
【问题描述】:

我有一个带有 SQL Server 2005 后端的 Access 2007 项目。但是,在 Access 中创建新的存储过程时,会出现错误:

ADO 错误:特定架构名称 DOMAIN\username 不存在或您无权使用它

如何改为使用“dbo”架构创建存储过程?存储过程属性对话框的“所有者”下拉菜单设置为用户名,并且无法更改为 dbo,即使用户处于“db_owner”角色。

【问题讨论】:

  • 谁(哪个用户)正在运行 Access 前端应用程序并将 T-SQL 查询发送到服务器?
  • 有几个用户是数据库所有者(创建存储过程、表单等)。其他用户将受到更多限制 - 仅查看数据并执行某些存储过程
  • 创建存储过程的用户是 db_owner 的成员

标签: sql-server sql-server-2005 ms-access ms-access-2007


【解决方案1】:

好的,我会让人们在 SQL Server 上创建 proc,而不是在其中将 dbo 添加到 create proc 代码中。如果您不能这样做,也许您可​​以在使用 sp_changeobjectowner 创建所有者后运行代码来更改所有者

【讨论】:

    【解决方案2】:

    尝试让用户成为 dbo 架构的成员,而不是 db_owner。我就是这样做的。

    顺便说一句,您可能想查看特定的 SQL Server 管理工具(SQL Server 2005 附带的 Management Studio 或可免费下载的 2005 或 2008 express 版本),这为 DDL 类型的任务提供了更丰富的界面.

    【讨论】:

    • 我自己使用 Management Studio,这也是一种选择(如果我找不到解决此问题的其他方法)。但是,用户在 Access 中创建存储过程更容易(无需编写任何 SQL 代码)。 Access 中的表单和宏将执行这些存储过程。
    • 我在 ssmstoolspack.com 处为 Management Studio 使用免费插件,除此之外,它还为您提供了自动 CRUD SP 创建工具。也许这会有所帮助?
    • 我没有列出 dbo,只有 db_* 角色(因为它是模式,而不是角色)。用户已经将 dbo 作为默认架构,但 Access 没有使用它
    【解决方案3】:

    设法解决它。如果您使用户成为数据库的所有者(而不是具有 db_owner 角色的用户),当您在 Access 2007 中创建存储过程时,它会在 dbo 架构而不是 DOMAIN\username 下创建它。

    执行此操作的步骤(在 Management Studio 中):

    • 右键数据库,选择属性
    • 点击文件
    • 在文本框中更改所有者
    • 确定确认

    缺点 - db_owner 角色下的其他用户仍将附加他们的用户名。所以必须为这些用户创建模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-18
      • 2022-11-11
      • 2016-09-24
      • 2013-05-02
      • 2012-05-25
      • 1970-01-01
      相关资源
      最近更新 更多