为客户端部署SQL Server数据库

时间:2014-08-28 15:11:25

标签: sql-server sql-server-2008 web-deployment

我有以下脚本创建新数据库,新用户和登录。我有一些自定义软件,我的客户使用它来登录数据库并创建必要的表,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]

任何建议都将不胜感激。

谢谢

1 个答案:

答案 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,除非从一个连接   提升客户端应用程序。