sql-server-2008 - SQL Server 存储过程查询

标签 sql-server-2008 microsoft-dynamics

我最近继承了一个使用 SQL Server 2008 作为后端服务器的内部 ASP.NET 网站。 SQL Server 有一个数据库,Database1 , 有几个 Companies在每个数据库中,都具有相同的表集。

例如:

Database1
     Company1.Table1
     Company1.Table2
     Company2.Table1
     Company2.Table2

该网站调用了几个存储过程。但是,存储过程已被编码为从硬编码的公司名称中选择数据。

例如:
SELECT * FROM Company1.Table2

迄今为止,这一直运行良好,因为该网站仅链接到 Company1。 .现在计划将网站链接到 Company2 .实际上,Company 2通过 IIS 上的单独设置被用作测试平台

有没有一种简单的方法,可能通过公司名称传递给存储过程,以便能够保留此设置?

也有人建议另一种方法是单独的 SQL 实例,所以我可以使用相同的 database\company名称,这将意味着很少的变化。

另一个建议是简单地从 Company 1 复制存储过程。至Company 2并更改 Company 2 中的硬编码名称?

对不起,如果我有点含糊不清,但今天早上我已经把它放在我的 table 上了,我既不是 SQL Server 也不是网站专家。

提前感谢您的任何建议。

干杯

贾斯汀

最佳答案

Is there an easy way, maybe pass through the company name to the stored procedure, to be able to retain this setup?



保留此设置的最简单方法(对 ASP.net 代码一无所知)是运行整个数据库的单独副本以进行测试。我建议第三个副本用于开发,但这已经离题了。

您上述所有方法都是可行的,但简单地复制数据库意味着您不必更改数据库中的任何代码。数据库名称希望不会在 ASP.net 代码中硬编码,因此您应该能够轻松地将其指向新数据库。

这为您提供了拥有独立数据集进行测试的额外好处,因此您在测试更改时不会追逐移动目标。

对其他建议方法的简要评论:

maybe pass through the company name to the stored procedure



这不仅意味着重构存储过程,还可能需要一些动态 SQL,并可能使您面临 SQL 注入(inject)(不一定是问题,因为它是内部的)。

Another suggestion was to simply to copy the stored procedures from Company 1 to Company 2 and change the hard coded name in Company 2?



同样,这将涉及重构存储过程(尽管只是使用查找/替换),我建议它需要全面测试以证明重构工作正常。

关于sql-server-2008 - SQL Server 存储过程查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15617630/

相关文章:

c# - 'Where' 表达式中的列名称无效

仅 Javascript Web 服务调用

dynamics-crm - 无法在 CRM 2015 的 SSRS 报告项目的数据源选项中获得 "Microsoft Dynamics CRM Fetch"

python - 在 PostgreSQL 和 Dynamics 365 Web API 之间构建 Python3 授权代理服务器

javascript - Dynamics 365。字段值 (javascript)

sql-server - MS SQL 服务器的日期/时间值字符串表示的独立格式?

sql - sql server 中超过 4 个部分的 parsename 的替代方法

sql-server-2008 - 在 T-SQL 中将表分解为 2 列

sql-server - 与 SQL Server RollUP 求和 - 但只是最后的总结?

javascript - API 中缺少查找?