一张表用于两个数据库

nir*_*rav 5 sql-server-2008-r2

我在db1和 中有一个通用的产品表db2。我想把它做成一张桌子,因为它有一个库存(产品库存)。在两个不同的数据库之间共享产品表的最佳解决方案是什么?我有几个想法:

  1. 在更新/删除/插入一个表时编写触发器并同时更新另一个表。
  2. 在产品表上创建视图并在第二个数据库中使用(我不知道如何)
  3. 复制(我不知道如何)

你能指导我走最好的路吗?

JNK*_*JNK 9

我只会在 db2 中创建一个同义词(假设该表存在于 db1 中)。这将使您直接指向源表,而无需在视图后面进行混淆,并且如果表的架构发生更改,您将无需维护视图:

CREATE SYNONYM dbo.CommonTableName FOR db1.dbo.CommonTableName
Run Code Online (Sandbox Code Playgroud)


Pet*_*ell 8

在第二个数据库中创建一个同义词,指向第一个数据库中的表。通过这种方式,您可以无缝地将两个数据库中的表用于任何操作(插入、更新、删除、选择等)。

    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;
Run Code Online (Sandbox Code Playgroud)