我经常使用ASP.NET和SQL Server 2005开发小型互联网应用程序。我的数据库总是只能由一个应用程序通过ASP.NET Web服务或类似的东西访问。
当我正在开发一个应用程序并在我的开发计算机(SQLExpress 2008)和托管服务器(SQL Server 2005)之间来回移动数据库时,我总是得到一个大杂烩的所有者/角色/模式/登录等似乎突然出现并控制了数据库的各个部分。
我只知道SQL Server是危险的,我只是想设计数据库,但我总是不得不更改数据库并最终获得各种权限错误(例如,在转移后尝试打开图表时)分贝)。
有没有办法简单地告诉SQL Server Management Studio“嘿,我是唯一一个会使用这个愚蠢数据库的人,所以让我这样做吧?”
像某些命令将所有这些片段设置为'dbo'或类似的东西?
答案 0 :(得分:1)
我假设您使用的是Windows。确保使用Windows身份验证连接到SQL并为您的帐户授予Sysadmin权限。现在您创建的所有内容(创建表格表名,创建视图视图名称)将自动将dbo作为所有者。
答案 1 :(得分:1)
不幸的是,您的问题有几个简单的答案,但您可能不会喜欢它们,因为它们会要求您投资SQL Server技能。
您应该看到的第一个工具是Visual Studio 2008 Database Developer Edition。这个版本有管理工具,你正在寻找管理模式,用户,...我认为现在包含在Visual Studio 2008开发版中
第二种方法是接受SQL Server管理,并通过编写DDL脚本获得良好的支持。我们的目标是以可预测的方式将更改部署到您的开发环境,以便从测试和最终生产到生产。
答案 2 :(得分:0)
问题的关键在于你来回移动数据库本身。数据库与其主机SQL实例,登录到用户映射以及其他设置(如加密密钥,msdb过程的使用和维护计划等)令人惊讶地紧密耦合。您可以通过谨慎使用SQL身份验证来最小化一些影响,但这并不能完全消除问题。真正的解决方案是您应该有一个部署脚本并通过执行先前在开发数据库上测试的T-SQL脚本将更改应用于生产数据库,而不是通过前后移动数据库'
答案 3 :(得分:0)
我创建所有对象,特别指定我希望它们创建为dbo。
所以创建一个proc我做
创建程序dbo.myprocname