我有以下脚本创建新数据库,新用户和登录。我有一些自定义软件,我的客户使用它来登录数据库并创建必要的表,SP并用数据填充表。数据库远程在线托管,我可以完全访问。
**编辑 - >我遇到的问题是我无法使用新用户打开新连接并创建任何表。它看起来像权限问题,因为它可以使用root root帐户登录。
理想情况下,我想运行这个单一脚本,这样我就可以轻松地通过SQL Server Management Studio将新数据库部署到新客户端,而且操作简单
请参阅下面的脚本:
-- SEARCH AND REPLACE THE FOLLOWING TERMS
--
-- db_TestDatabase Database name
-- TestPa$$w0rd password
-- TestUser1 username
use master
go
--create a test database
CREATE DATABASE [db_TestDatabase]
GO
--create user login
CREATE LOGIN [TestUser1] WITH PASSWORD=N'TestPa$$w0rd'
GO
--create user in database
CREATE USER [TestUser1] FOR LOGIN [TestUser1] WITH DEFAULT_SCHEMA=[test_Schema]
GO
--create role
CREATE ROLE [test_Role] AUTHORIZATION [dbo]
GO
--create schema
CREATE SCHEMA [test_Schema] AUTHORIZATION [TestUser1]
GO
--apply permissions to schemas
GRANT ALTER ON SCHEMA::[test_Schema] TO [test_Role]
GO
GRANT CONTROL ON SCHEMA::[test_Schema] TO [test_Role]
GO
GRANT SELECT ON SCHEMA::[test_Schema] TO [test_Role]
GO
GRANT DELETE ON SCHEMA::[dbo] TO [test_Role]
GO
GRANT INSERT ON SCHEMA::[dbo] TO [test_Role]
GO
GRANT SELECT ON SCHEMA::[dbo] TO [test_Role]
GO
GRANT UPDATE ON SCHEMA::[dbo] TO [test_Role]
GO
GRANT REFERENCES ON SCHEMA::[dbo] TO [test_Role]
GO
--ensure role membership is correct
EXEC sp_addrolemember N'test_Role ', N'TestUser1'
GO
--allow users to create tables in test_Schema
GRANT CREATE TABLE TO [test_Role]
GO
--Allow user to connect to database
GRANT CONNECT TO [TestUser1]
任何建议都将不胜感激。
谢谢
答案 0 :(得分:0)
这可能是用户访问控制问题,请尝试右键单击Management Studio并以管理员身份运行,如果您拥有该权限,则可能会遇到您所看到的问题。
一些相关的阅读:
User Account Control and SQL Server
用户帐户控制会影响Microsoft SQL Server 连接(SQL Server登录)和限制对资源的访问 管理员的访问控制列表(ACL)。
在早于Windows Vista和Windows Server 2008的版本中, 本地管理员组的成员不需要自己的SQL 服务器登录并且不需要授予管理员权限 SQL Server中的特权。它们连接到SQL Server 内置服务器主体BUILTIN \ Administrators(B \ A),他们有 管理员权限,因为B \ A是已修复的sysadmin的成员 服务器角色。管理员权限在Windows Vista中被删除 和Windows Server 2008,因此管理员用户无法连接到SQL 服务器实例凭借B \ A,除非从一个连接 提升客户端应用程序。