Sql server 扩展第三方数据库的最佳实践?

Sql server 扩展第三方数据库的最佳实践?,sql-server,database,Sql Server,Database,我们的开发人员通过添加表、视图、存储过程和函数来扩展第三方数据库(MS SQL)。最近,当供应商发布数据库更新时,他们删除了我们所有的自定义对象。现在的问题是,有哪些最佳实践可以让我们扩展第三方数据库,但又能保证我们的对象不受未来更新的影响?我的第一个想法是创建一个单独的数据库,但随后我不得不完全限定所有对原始数据库的引用,这可能会导致将数据库更改从测试升级到生产时出现问题 使用外部数据库或尝试将自定义对象存储在新数据库中。无论何时运行供应商提供的脚本,请确保使用的帐户对该架构没有权限。最佳做法

我们的开发人员通过添加表、视图、存储过程和函数来扩展第三方数据库(MS SQL)。最近,当供应商发布数据库更新时,他们删除了我们所有的自定义对象。现在的问题是,有哪些最佳实践可以让我们扩展第三方数据库,但又能保证我们的对象不受未来更新的影响?我的第一个想法是创建一个单独的数据库,但随后我不得不完全限定所有对原始数据库的引用,这可能会导致将数据库更改从测试升级到生产时出现问题

使用外部数据库或尝试将自定义对象存储在新数据库中。无论何时运行供应商提供的脚本,请确保使用的帐户对该架构没有权限。

最佳做法是与您购买的第三方产品的开发人员进行对话。他们可能没有将产品设计为可扩展的。你需要和他们谈谈,看看他们是否能将可扩展性作为一个特性


他们可能希望限制您扩展数据库的方式。您的一些扩展可能会导致仔细调整的数据库出现问题。

唯一安全的方法是使用不同的数据库

您可以尝试设置PermsiSONS,这样他们就不会丢弃您的项目,但我敢打赌,作为供应商,他们有SA访问权限


如果您使用的是SQL Server 2005或更高版本,您可以尝试使用不同的架构,但开发人员仍然可以删除您的所有项目。

您还应该检查与供应商的许可协议,以确保您没有违反该协议。一些软件供应商明确禁止客户端在其许可协议中进行模式更改。许多公司的立场是你拥有数据,但模式是他们的知识产权。此外,即使是对模式的“简单”更改也可能导致应用程序本身出现问题。供应商必须在一定程度上保证您站点上安装的BIT确实与他们提供和测试的BIT相同。

@Sam:单独的模式可能会有所帮助,但如果3P真的反对扩展,他们可以删除除自己之外的所有模式。这取决于他们的帐户具有何种安全性。@Sam:我想这是他们的数据库,他们的“安装”帐户很可能对其具有完全权限。@约翰:毫无疑问,您已经看到供应商安装了需要SA登录信息的例程。有些供应商做得很好。@Sam:我在一家公司工作过,他们的产品用一个新的用户名创建了DB,他们正确地使用了这个新的管理员用户名,他们正是那种喜欢删除所有自定义项的人。我看到他们的数据库由于用户自定义而变得缓慢…下一个版本是pow!一切都是模糊和/或加密的!取决于供应商是对定制更改收费,还是只销售罐装产品。他们可能会使您的技术支持无效。我不想支持客户在我的数据库中捣乱的产品。在这种情况下,我们只添加对象,从不更改任何供应商code@Eric沃特金斯,就在
woops之前,每个人都这么说,哦,不,呼叫支持@Eric:您的存储过程是否引用了供应商对象?那么您的查询可能会导致死锁。供应商没有根据您在数据库中所做的更改对其数据库进行优化!据我所知,供应商不知道什么是优化:-)我没有接触过任何可以进行更新的定制,但我也没有见过很多使用(nolock)的产品。你能使用别名来处理测试和生产中的跨数据库引用问题吗?在很多情况下,如果您对现有应用程序进行了未经授权的更改,则您的保修/支持协议将失效。用户声称他们发现了一个bug,我们无法复制它。经过调查,消息来源是他们在DB上的一个关键表中添加了一个触发器,该触发器最终爆炸。不用说,扳机是在事后放下的。