Sql server 简化SQL Server';s登录/所有者/架构/角色/主体等

Sql server 简化SQL Server';s登录/所有者/架构/角色/主体等,sql-server,database,schema,owner,Sql Server,Database,Schema,Owner,我经常使用ASP.NET和SQLServer2005开发小型internet应用程序。我的数据库始终只能由一个应用程序通过ASP.NET web服务或类似的方式访问 当我开发一个应用程序并在我的开发计算机(SQLExpress 2008)和托管服务器(SQL server 2005)之间来回移动一个数据库时,我总是会得到一个由所有者/角色/模式/登录名等组成的大杂烩,它们似乎会突然出现并控制数据库的各个部分 我对SQL Server的了解只够危险,我只想设计数据库,但我总是必须更改数据库,最终会

我经常使用ASP.NET和SQLServer2005开发小型internet应用程序。我的数据库始终只能由一个应用程序通过ASP.NET web服务或类似的方式访问

当我开发一个应用程序并在我的开发计算机(SQLExpress 2008)和托管服务器(SQL server 2005)之间来回移动一个数据库时,我总是会得到一个由所有者/角色/模式/登录名等组成的大杂烩,它们似乎会突然出现并控制数据库的各个部分

我对SQL Server的了解只够危险,我只想设计数据库,但我总是必须更改数据库,最终会出现各种权限错误(例如,在传输数据库后尝试打开图表时)

有没有一种方法可以简单地告诉SQLServerManagementStudio“嘿,我是唯一一个会使用这个愚蠢的db的人,让我来做吧?”


像一些将所有这些部分设置为“dbo”之类的命令吗?

我假设您使用的是Windows。确保您使用Windows身份验证连接到SQL,并授予您的帐户Sysadmin权限。现在,您创建的所有内容(创建表tablename、创建视图viewname)都将自动将dbo作为所有者。

问题的关键在于您来回移动数据库本身。数据库通过登录到用户映射和其他设置(如加密密钥、msdb过程的使用和维护计划等)与它们的主机SQL实例紧密耦合,这令人惊讶。您可以通过谨慎地使用ExlusiveSQL身份验证来最小化一些影响,但这并不能完全消除问题。真正的解决方案是,您应该有一个部署脚本,并通过执行您以前在开发数据库上测试过的T-SQL脚本来将更改应用到生产数据库,而不是通过“来回”移动数据库来实现。

不幸的是,您的问题有两个简单的答案,但您可能不会喜欢它们,因为它们需要您投资于SQL Server技能

您应该查看的第一个工具是VisualStudio2008数据库开发人员版。此版本具有您正在寻找的管理工具,用于管理架构、用户等。。。我认为它现在包含在VisualStudio2008开发版中


第二种方法是采用SQL Server管理,并通过编写DDL脚本获得可通信性。我们的目标是以可预测的方式将更改从开发环境部署到SQL Server,以进行测试,并最终部署到生产环境。

我创建所有对象,特别指定要将它们创建为dbo

所以要创建一个proc,我需要


创建过程dbo.myprocname

是的,我正在使用Windows(Vista Ultimate)并通过Windows Auth以系统管理员权限登录。但是,我使用的一些数据库是从旧的应用程序中获取的,这些应用程序已经上载到托管服务器,并在托管服务器上使用SQL登录进行了修改。然后,我使用发布向导复制到我自己的SQLExpress实例并在那里进行修改。使用sp_changeobjectowner将所有对象重置为dbo。然而,如果我正在做一个快速的项目,并且我可以从我以前做过的另一个项目中剥离60%的db结构,那么我想把db拉下来离线使用,而不是从头开始制作。