sql >> データベース >  >> RDS >> Sqlserver

テーブルのセットでCDCを無効にする方法、またはSQLServerのデータベース内のすべてのテーブルで無効にする方法-SQLServerチュートリアル

    シナリオ:

    SQL Server DBAまたは開発者として作業しています。データベース内のすべてのテーブルで変更データキャプチャ(CDC)を無効にできるスクリプトを準備する必要があります。または、特定のテーブルで無効にする場合は、次のことができる必要があります。
    以下のスクリプトを使用して、データベース内のすべてのテーブルで変更データキャプチャを無効にすることができます。テーブルのリストを提供する場合は、オプションもあります。選択クエリを変更するだけで、CDCを無効にするテーブルのリストを含めたり除外したりできます。
    /*------------------------------------------------
    Disable CDC on Set of Tables
    --------------------------------------------------*/
    DECLARE @TableName VARCHAR(100)
    DECLARE CDC_Cursor CURSOR FOR
    --Provide List of Tables here on which CDC needs to be disabled. 
      SELECT *
      FROM   (SELECT 'T' AS TableName
              UNION ALL
              SELECT 'T2' AS TableName
             --IF want to Disable CDC on All Table, then use
             --SELECT Name
             --FROM   sys.objects
             --WHERE  type = 'u'
             --       AND is_ms_shipped <> 1
             ) CDC
    OPEN CDC_Cursor
    FETCH NEXT FROM CDC_Cursor INTO @TableName
    WHILE @@FETCH_STATUS = 0
      BEGIN
          DECLARE @SQL NVARCHAR(1000)
          DECLARE @CDC_Status TINYINT
    
          SET @CDC_Status=(SELECT COUNT(*)
                           FROM   cdc.change_tables
                           WHERE  Source_object_id = OBJECT_ID(@TableName))
    
          --IF CDC is Already Disabled on Table , Print Message
          IF @CDC_Status = 0
            PRINT 'CDC is already Disabled on ' + @TableName
                  + ' Table'
    
          --IF CDC is not Disabled on Table, Disable CDC and Print Message
          IF @CDC_Status = 1
            BEGIN
                SET @SQL='EXEC sys.sp_cdc_disable_table
          @source_schema = ''dbo'',
          @source_name   = ''' + @TableName
                         + ''',
          @capture_instance     = N''All'';'
    
                EXEC sp_executesql
                  @SQL
    
                PRINT 'CDC  disabled on ' + @TableName
                      + ' Table successfully'
            END
    
          FETCH NEXT FROM CDC_Cursor INTO @TableName
      END
    
    CLOSE CDC_Cursor
    DEALLOCATE CDC_Cursor
     
     
     
    1. 並行プログラムの優先順位を変更する方法

    2. 主キーが重要である理由とその選択方法

    3. Androidアプリはオンラインのmysqlデータベースに直接接続できますか

    4. ORA-24247:ネットワーク・アクセスがアクセス制御リスト(ACL)によって拒否されました