我已经创建了ASP.NET C#
网络应用程序(以数据库作为SQL Server 2008
)。我的应用程序连接到不同的数据库(例如计数为10)。它们都具有相同的结构,即相同的表名、存储过程名、SP参数计数和类型、表模式都是相同的。
但是内部的数据是不同的.
我在每个数据库dbo.usp_getData1
中都有存储过程,它接受,一些参数,,做一些表扫描,并且只检索与该数据库有关的数据。
我的问题是,如何使用一个存储过程(参数/表结构相同)从所有数据库中检索数据?
我可以通过SQL Server
或C# Coding
实现同样的目标。
意见对我有帮助吗?
CREATE VIEW [ schema_name . ] view_name [ (column [ ,...n ] ) ]
[ WITH <view_attribute> [ ,...n ] ]
AS select_statement
[ WITH CHECK OPTION ] [ ; ]
<view_attribute> ::=
{
[ ENCRYPTION ]
[ SCHEMABINDING ]
[ VIEW_METADATA ] }
发布于 2013-02-12 02:24:23
如果完全限定表名(如Database.Schema.Table ),则可以从多个数据库(位于同一服务器上)进行选择。
参见例如http://www.sqlteam.com/article/selecting-data-from-different-databases
如果您想将数据库名称作为参数传递给您的存储过程,您可能不得不求助于动态SQL,尽管这可能会打开一个全新的蠕虫。
参见例如SQL 2000表名作为存储过程中的变量和sql.html
简单的例子:
CREATE PROCEDURE SelectEverything
@tableName NVARCHAR(250)
AS
BEGIN
DECLARE @sql NVARCHAR(500)
SET @sql = 'SELECT * FROM ' + @tableName;
EXEC(@sql);
END
GO
如果您执行此proc:
EXEC dbo.SelectEverything 'SomeOtherDatabase.dbo.SomeTable'
它将在数据库SomeTable的模式dbo中选择表SomeOtherDatabase的所有内容。
但是请阅读有关动态SQL的链接。
https://stackoverflow.com/questions/14830025
复制