Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för:SQL Server
Azure SQL Managed Instance
Detta ämne beskriver hur man kan visa och ändra artikelegenskaper i SQL Server genom att använda SQL Server Management Studio, Transact-SQL eller Replication Management Objects (RMO).
Begränsningar och restriktioner
- Vissa egenskaper kan inte ändras efter att en publikation har skapats, och andra kan inte ändras om det finns prenumerationer på publikationen. Egenskaper som inte kan ändras visas som skrivskyddade.
Recommendations
- När en publikation har skapats kräver vissa egenskapsändringar en ny ögonblicksbild. Om en publikation har prenumerationer kräver vissa ändringar också att alla prenumerationer initieras på nytt. Mer information finns i Ändra publikations- och artikelegenskaper och Lägg till artiklar i och ta bort artiklar från befintliga publikationer.
Använda SQL Server Management Studio
Visa och ändra artikelegenskaper i dialogrutan Publikationsegenskaper - <Publikation>, som finns tillgänglig i Microsoft SQL Server Management Studio och Replication Monitor. Information om hur du startar Replikeringsövervakaren finns i Starta replikeringsövervakaren.
Allmänna sidan innehåller publikationens namn och beskrivning, databasens namn, publikationstyp och prenumerationens utgångsläge.
Artiklarsidanmotsvarar artikelsidan i Guiden för ny publikation. Använd denna sida för att lägga till och ta bort artiklar samt för att ändra egenskaper och kolumnfiltrering för artiklar.
Sidan Filter Rows motsvarar sidan Filter Table Rows i New Publication Wizard. Använd denna sida för att lägga till, redigera och ta bort statiska radfilter för alla typer av publikationer, samt för att lägga till, redigera och ta bort parameteriserade radfilter och join-filter för sammanslagna publikationer.
Snapshot-sidan låter dig ange format och plats för snapshoten, om snapshoten ska komprimeras och skript som ska köras före och efter att snapshoten appliceras.
FTP Snapshot-sidan (för snapshot- och transaktionspublikationer, samt sammanslagningspublikationer för utgivare som kör versioner före SQL Server 2005) låter dig specificera om prenumeranter kan ladda ner snapshot-filer via File Transfer Protocol (FTP).
FTP Snapshot och Internet-sidan (för sammanslagningspublikationer från förlag som kör SQL Server 2005 eller senare) låter dig ange om prenumeranter kan ladda ner snapshot-filer via FTP, och om prenumeranter kan synkronisera prenumerationer via HTTPS.
Sidan för prenumerationsalternativ låter dig ställa in ett antal alternativ som gäller för alla prenumerationer. Alternativen varierar beroende på vilken publikation det är.
Sidan Publication Access List låter dig ange vilka inloggningar och grupper som kan komma åt en publikation.
Sidan Agent Security låter dig komma åt inställningar för de konton under vilka följande agenter körs och skapa anslutningar till datorerna i en replikationstopologi: Snapshot Agent för alla publikationer; Log Reader Agent för alla transaktionella publikationer; och Queue Reader Agent för transaktionella publikationer som tillåter köade uppdateringsprenumerationer.
Datapartitionssidan (för sammanslagna publikationer från förlag som kör SQL Server 2005 eller senare) låter dig ange om prenumeranter på publikationer med parameteriserade filter kan begära en snapshot om en sådan inte finns tillgänglig. Det låter dig också generera snapshots för en eller flera partitioner, antingen en gång eller på ett återkommande schema.
För att visa och ändra artikelegenskaper
På sidan Artiklar i dialogrutan Publikationsegenskaper - <Publikation> , välj en artikel och klicka sedan på Artikelegenskaper.
Välj vilka artiklar egenskapsändringar som ska gälla:
Klicka på Sätt egenskaper för markerad <objekttyp> artikel för att starta dialogrutan Artikelegenskaper - <Objektnamn> ; egenskapsändringar som görs i denna dialogruta tillämpas endast på objektet som är markerat i objektpanelen på Artiklarsidan .
Klicka på Sätt egenskaper för alla <objekttypartiklar> för att starta dialogrutan Egenskaper för alla <objekttypartiklar>; egenskapsändringar som gjorts i denna dialogruta tillämpas på alla objekt av den typen i objektpanelen på artikelsidan, inklusive de som ännu inte är valda för publicering.
Anmärkning
Egenskapsändringar som görs i dialogrutan Egenskaper för alla artiklar av objekttypen <ObjectType> åsidosätter alla ändringar som tidigare gjorts i dialogrutan Artikel-egenskaper - <ObjectName> Om du till exempel vill sätta ett antal standardinställningar för alla artiklar av en objekttyp, men också vill sätta vissa egenskaper för enskilda objekt, ställ först standardinställningarna för alla artiklar. Sedan ställer du in egenskaperna för de enskilda objekten.
Ändra eventuella egenskaper om det behövs och klicka sedan på OK.
Klicka OK i dialogrutan Publikationsegenskaper - <Publikation> .
Använda Transact-SQL
Artiklar kan modifieras och deras egenskaper returneras programmatiskt med hjälp av replikationslagrade procedurer. De lagrade procedurer du använder beror på vilken typ av publikation artikeln tillhör.
För att se egenskaperna hos en artikel som tillhör en snapshot- eller transaktionspublikation
Utför sp_helparticle, och ange namnet på publikationen för parametern
@publicationoch namnet på artikeln för parametern@article. Om du inte specificerar@article, kommer information att återlämnas för alla artiklar i publikationen.Kör sp_helparticlecolumns för tabellartiklar för att lista alla kolumner som finns tillgängliga i bastabellen.
Att ändra egenskaperna hos en artikel som tillhör en snapshot- eller transaktionspublikation
Kör sp_changearticle, och specificera artikelegenskapen som ändras i parametern
@propertysamt det nya värdet av denna egenskap i parametern@value.Anmärkning
Om ändringen kräver generering av en ny snapshot måste du också ange ett värde på
1för@force_invalidate_snapshot, och om ändringen kräver att prenumeranter initieras om, måste du även ange ett värde på1för@force_reinit_subscription. För mer information om de egenskaper som, när de ändras, kräver en ny snapshot eller ominitialisering, se Ändra publikation och Artikelegenskaper.
För att se egenskaperna hos en artikel som tillhör en sammanslagningspublikation
Utför sp_helpmergearticle, och ange namnet på publikationen för parametern
@publicationoch namnet på artikeln för parametern@article. Om du inte specificerar dessa parametrar kommer information att returneras för alla artiklar i en publikation eller hos förlaget.Utför sp_helpmergearticlecolumn för tabellartiklar för att lista alla kolumner som finns tillgängliga i bastabellen.
Att modifiera egenskaperna hos en artikel som tillhör en sammanslagningspublikation
Kör sp_changemergearticle, och specificera artikelegenskapen som ändras i parametern
@propertysamt det nya värdet av denna egenskap i parametern@value.Anmärkning
Om ändringen kräver generering av en ny snapshot måste du också ange ett värde på
1för@force_invalidate_snapshot, och om ändringen kräver att prenumeranter initieras om, måste du även ange ett värde på1för@force_reinit_subscription. För mer information om de egenskaper som, när de ändras, kräver en ny snapshot eller ominitialisering, se Ändra publikation och Artikelegenskaper.
Exempel (Transact-SQL)
Detta exempel på transaktionell replikation återger egenskaperna hos den publicerade artikeln.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksProductTran';
USE [AdventureWorks2022]
EXEC sp_helparticle
@publication = @publication;
GO
Detta exempel på transaktionell replikation ändrar schemaalternativen för den publicerade artikeln.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Detta exempel på sammanslagningsreplikering returnerar egenskaperna hos den publicerade artikeln.
DECLARE @publication AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
USE [AdventureWorks2022]
EXEC sp_helpmergearticle
@publication = @publication;
GO
Detta exempel på sammanslagning av replikering ändrar konfliktdetekteringsinställningarna för en publicerad artikel.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @article = N'SalesOrderHeader';
-- Enable column-level conflict tracking.
-- Changing this property requires that existing subscriptions
-- be reinitialized and that a new snapshot be generated.
USE [AdventureWorks2022]
EXEC sp_changemergearticle
@publication = @publication,
@article = @article,
@property = N'column_tracking',
@value = N'true',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
Använda replikeringshanteringsobjekt (RMO)
Du kan modifiera artiklar och komma åt deras egenskaper programmatiskt genom att använda Replication Management Objects (RMO). De RMO-klasser du använder för att se eller ändra artikelegenskaper beror på vilken typ av publikation artikeln tillhör.
Att visa eller ändra egenskaper hos en artikel som tillhör en snapshot- eller transaktionspublikation
Skapa en anslutning till Publisher med hjälp av klassen ServerConnection.
Skapa en instans av TransArticle klassen.
Ange egenskaperna Name, PublicationNameoch DatabaseName.
Ange anslutningen från steg 1 för egenskapen ConnectionContext.
Anropa metoden LoadProperties för att hämta objektets egenskaper. Om den här metoden returnerar falsehar antingen artikelegenskaperna i steg 3 definierats felaktigt eller så finns inte artikeln.
(Valfritt) För att byta egenskaper, sätt ett nytt värde för en av egenskaperna TransArticle som kan sättas.
(Valfritt) Om du specificerat ett värde på true för CachePropertyChanges, anropar CommitPropertyChanges metoden för att commita ändringar på servern. Om du angav ett falskt värde förCachePropertyChanges (standard), skickas ändringarna omedelbart till servern.
För att se eller ändra egenskaper hos en artikel som tillhör en sammanslagningspublikation
Skapa en anslutning till Publisher med hjälp av klassen ServerConnection.
Skapa en instans av MergeArticle klassen.
Ange egenskaperna Name, PublicationNameoch DatabaseName.
Ange anslutningen från steg 1 för egenskapen ConnectionContext.
Anropa metoden LoadProperties för att hämta objektets egenskaper. Om den här metoden returnerar falsehar antingen artikelegenskaperna i steg 3 definierats felaktigt eller så finns inte artikeln.
(Valfritt) För att byta egenskaper, sätt ett nytt värde för en av egenskaperna MergeArticle som kan sättas.
(Valfritt) Om du specificerat ett värde på true för CachePropertyChanges, anropar CommitPropertyChanges metoden för att commita ändringar på servern. Om du angav ett falskt värde förCachePropertyChanges (standard), skickas ändringarna omedelbart till servern.
Exempel (RMO)
Detta exempel ändrar en sammanslagningsartikel för att specificera affärslogikhanteraren som används av artikeln.
// Define the Publisher, publication, and article names.
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string articleName = "SalesOrderHeader";
// Set the friendly name of the business logic handler.
string customLogic = "OrderEntryLogic";
MergeArticle article = new MergeArticle();
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the article.
article.ConnectionContext = conn;
article.Name = articleName;
article.DatabaseName = publicationDbName;
article.PublicationName = publicationName;
// Load the article properties.
if (article.LoadProperties())
{
article.ArticleResolver = customLogic;
}
else
{
// Throw an exception of the article does not exist.
throw new ApplicationException(String.Format(
"{0} is not published in {1}", articleName, publicationName));
}
}
catch (Exception ex)
{
// Do error handling here and rollback the transaction.
throw new ApplicationException(String.Format(
"The business logic handler {0} could not be associated with " +
" the {1} article.",customLogic,articleName), ex);
}
finally
{
conn.Disconnect();
}
' Define the Publisher, publication, and article names.
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim articleName As String = "SalesOrderHeader"
' Set the friendly name of the business logic handler.
Dim customLogic As String = "OrderEntryLogic"
Dim article As MergeArticle = New MergeArticle()
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the article.
article.ConnectionContext = conn
article.Name = articleName
article.DatabaseName = publicationDbName
article.PublicationName = publicationName
' Load the article properties.
If article.LoadProperties() Then
article.ArticleResolver = customLogic
Else
' Throw an exception of the article does not exist.
Throw New ApplicationException(String.Format( _
"{0} is not published in {1}", articleName, publicationName))
End If
Catch ex As Exception
' Do error handling here and rollback the transaction.
Throw New ApplicationException(String.Format( _
"The business logic handler {0} could not be associated with " + _
" the {1} article.", customLogic, articleName), ex)
Finally
conn.Disconnect()
End Try