Sql-Server-2008-R2

一張表在兩個數據庫中使用

  • August 15, 2018

我在db1和中有一個常見的產品表db2。我想把它做成一張桌子,因為它有一個庫存(產品庫存)。在兩個不同的數據庫之間共享產品表的最佳解決方案是什麼?我有幾個想法:

  1. 在更新/刪除/插入一個表時寫入觸發器並同時更新另一個表。
  2. 在產品表上創建視圖並在第二個數據庫中使用(我不知道如何)
  3. 複製(我不知道如何)

你能指導我最好的方法嗎?

我只想在 db2 中創建一個同義詞(假設表存在於 db1 中)。這將讓您直接指向源表而不會混淆視圖,並且如果表的架構發生更改,您將無需維護視圖:

CREATE SYNONYM dbo.CommonTableName FOR db1.dbo.CommonTableName

在第二個數據庫中創建指向第一個數據庫中的表的同義詞。這樣,您可以無縫地將兩個數據庫中的表用於任何操作(插入、更新、刪除、選擇等)。

   CREATE DATABASE FirstDB ;
   CREATE DATABASE SecondDB ;
   GO
   USE FirstDB;
   GO
   CREATE TABLE Products(id INT IDENTITY PRIMARY KEY);
   GO
   USE SecondDB;

   -- Create a synonym to be able to reach the product table from the second database
   CREATE SYNONYM dbo.Products FOR FirstDB.dbo.Products;

   -- Add some values to the common table, available from both databases
   INSERT Products DEFAULT VALUES;
   INSERT Products DEFAULT VALUES;
   INSERT Products DEFAULT VALUES;

   -- any statement is available for both databases
   SELECT * FROM FirstDb.dbo.Products;
   SELECT * FROM SecondDB.dbo.Products;

引用自:https://dba.stackexchange.com/questions/45579