Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以通过一个连接请求从多个数据库获取数据_C#_Sql Server_Database - Fatal编程技术网

C# 是否可以通过一个连接请求从多个数据库获取数据

C# 是否可以通过一个连接请求从多个数据库获取数据,c#,sql-server,database,C#,Sql Server,Database,我需要处理这个设计糟糕的数据库,通过向服务器添加一个新的数据库来建立一组新的数据。所以我必须从多个数据库获取数据,我想知道有没有办法通过一个连接获取所有这些组数据?我使用的是c#。(旁白:有可能影响设计吗?这听起来部分像是数据库模式名称的设计目的……) 有时这是可能的(例如,在SQL Server中使用数据库.schema.object符号,甚至服务器.database.schema.object),但我不推荐这样做,因为相同的方法不适合所有的用例,而且它破坏了许多最佳实践准则。我强烈建议只需为

我需要处理这个设计糟糕的数据库,通过向服务器添加一个新的数据库来建立一组新的数据。所以我必须从多个数据库获取数据,我想知道有没有办法通过一个连接获取所有这些组数据?我使用的是c#。

(旁白:有可能影响设计吗?这听起来部分像是数据库模式名称的设计目的……)

有时这是可能的(例如,在SQL Server中使用
数据库.schema.object
符号,甚至
服务器.database.schema.object
),但我不推荐这样做,因为相同的方法不适合所有的用例,而且它破坏了许多最佳实践准则。我强烈建议只需为每个数据库生成连接字符串,可能使用,或更具体的变体,如

如果您担心有太多的打开(池化)连接,您可以禁用动态连接上的池化(但是您需要自己处理连接管理;就个人而言,在我能够证明存在问题之前,我很想保持池化处于启用状态)。

(旁白:有可能影响设计吗?这听起来有点像数据库模式名称的设计目的……)

有时是可能的(例如,在SQL Server中使用
数据库.schema.object
表示法,甚至
服务器.database.schema.object
),但我不建议这样做,因为相同的方法不适合所有用例,而且它违反了许多最佳实践准则。我强烈建议只需为每个数据库生成连接字符串,可能使用,或更具体的变体,如


如果您担心有太多的打开(池化)连接,您可以禁用动态连接上的池化(但是您需要自己处理连接管理;就个人而言,在我能够证明存在问题之前,我很想保持池化处于启用状态).

如果所有数据库都在同一台服务器上,您可以使用连接到任何主数据库的全名进行查询。您可能需要使用此设计动态生成所有代码,尽管您事先不知道需要连接到哪个数据库

select * from database1.dbo.mytable m
join  database2.dbo.mytable m2 on m.id = m2.id

如果所有数据库都在同一台服务器上,您可以使用连接到任何主数据库的全名来查询它们。您可能需要使用此设计动态生成所有代码,尽管您事先不知道需要连接到哪个数据库

select * from database1.dbo.mytable m
join  database2.dbo.mytable m2 on m.id = m2.id

您可以指定数据库吗?多久添加一个新组?您使用哪个数据库服务器?可以从SQL server和Oracle中的数据库(可能还有大多数数据库引擎)在数据库服务器之间建立连接-但每个组的设置都会有所不同。使用sql server,通过调用存储过程添加新组,并在表中插入新记录以跟踪新的数据库名称。这种设计太糟糕了,可能会导致我寻找其他工作!让我难以置信的是,任何人都会认为这是一个好主意。您能指定数据库吗?H添加新组的频率是多少?您使用的是哪个数据库服务器?可以从SQL server和Oracle中的数据库(可能还有大多数数据库引擎)在数据库服务器之间建立连接-但每个数据库的设置都会有所不同。使用sql server,通过调用存储过程添加新组,并在表中插入新记录以跟踪新的数据库名称。这种设计太糟糕了,可能会导致我寻找其他工作!这让我难以置信,任何人都会认为这是一个好主意。如果生成连接对于每个数据库,是否意味着我必须创建与数据库数量一样多的连接?听起来有点低效,可能有数百个组。哇;数百个数据库?是的…存在低效,但我认为这是在设计中。你可以尝试database.schema.name方法,但风险自负…如果生成co每个数据库的连接字符串,这是否意味着我必须创建与数据库数量一样多的连接?听起来有点效率低下,可能有数百个组。哇;数百个数据库?是的……存在效率低下的问题,但我认为这是在设计中。您可以尝试database.schema.name方法,但风险自负。。。