2010-03-29 37 views

Trả lời

27

Có:

SELECT * 
FROM sys.tables 
WHERE is_replicated = 1 

Từ MSDN cho lĩnh vực is_replicated:

1 = Bảng được công bố sử dụng ảnh chụp sao chép hoặc giao dịch sao chép.

+1

Điều này phụ thuộc vào loại bản sao được sử dụng. Đối với ảnh chụp bạn có thể cần kiểm tra is_published = 1. MSDN: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/3333c691-4426-476c-b7c4-f8f55068937a/difference-between-ispublished-and diễn đàn = sqlreplication – Zeeshan

+0

Tôi có thể xác nhận rằng trong SQL server 2014/2016 (tôi không có phiên bản đầu để kiểm tra), để sao chép ảnh chụp nhanh, [is_replicated] không cho biết liệu một bảng được nhân rộng hay không phải. Bạn phải sử dụng [is_published] = 1 để tìm bảng sao chụp nhanh. – jyao

13

Có thể truy vấn cơ sở dữ liệu distribution để xem bài viết nào (bảng/lượt xem/đối tượng ...) được xuất bản và Ấn phẩm nào xuất bản.

SELECT 
    P.[publication] AS [Publication Name] 
    ,A.[publisher_db] AS [Database Name] 
    ,A.[article]  AS [Article Name] 
    ,A.[source_owner] AS [Schema] 
    ,A.[source_object] AS [Object] 
FROM 
    [distribution].[dbo].[MSarticles] AS A 
    INNER JOIN [distribution].[dbo].[MSpublications] AS P 
     ON (A.[publication_id] = P.[publication_id]) 
ORDER BY 
    P.[publication], A.[article]; 
+1

Hoạt động trên SQL Server 2008 – Michael

+0

Rất hữu ích khi truy vấn các thực thể [phân phối]. Và nếu bài viết của bạn là tất cả trong cùng một DB (ít nhất, tất cả những cái bạn muốn xác định), bạn có thể tham gia vào DB của [dbName] .sys.tables/objects/etc. chế độ xem siêu dữ liệu để hiển thị nhiều thông tin hơn về chúng, như "loại đối tượng là gì" (vì bạn có thể có nhiều hơn là chỉ nhân bản bảng), hoặc thậm chí "cột nào là PK". Tôi sẽ cố gắng đăng thêm về điều này khi tôi có cơ hội. – NateJ

Các vấn đề liên quan