Skip to content
Agentmart
Submit a tool

snowpipe-bcdr

Use when designing or operating Snowpipe disaster recovery on Azure ADLS Gen2 — choosing between dual-pipe, RA-GRS, active-active, or Failover Group patterns…

Skill by Kilo-Org

IndexedApache-2.0★ 195
Write a review

Chalk Labs

Need help deploying snowpipe-bcdr?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/kilo-org-snowpipe-bcdr

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Use when designing or operating Snowpipe disaster recovery on Azure ADLS Gen2 — choosing between dual-pipe, RA-GRS, active-active, or Failover Group patterns, and running failover/failback/catchup. Triggers: snowpipe BCDR, snowpipe disaster recovery, snowpipe failover, dual pipe, active-active pipe, RA-GRS snowpipe, GZRS snowpipe, snowpipe catchup, pipe failback, snowpipe high availability, failover group snowpipe, snowpipe RPO RTO.

Use cases: cloud

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/snowpipe-bcdr

What's inside

Skill name
snowpipe-bcdr
Description
Use when designing or operating Snowpipe disaster recovery on Azure ADLS Gen2 — choosing between dual-pipe, RA-GRS, active-active, or Failover Group patterns, and running failover/failback/catchup. Triggers: snowpipe BCDR, snowpipe disaster recovery, snowpipe failover, dual pipe, active-active pipe, RA-GRS snowpipe, GZRS snowpipe, snowpipe catchup, pipe failback, snowpipe high availability, failover group snowpipe, snowpipe RPO RTO.
License
Apache-2.0
Metadata
category: data
Instructions
121 lines in SKILL.md · view on GitHub

Files (2)

  • LICENSE
  • SKILL.md

SKILL.md (first lines)

# Snowpipe BCDR on Azure

## Overview

This skill helps developers and data engineers design, implement, and operate Snowpipe business continuity / disaster recovery on **Azure ADLS Gen2**. Six patterns are supported — pick one based on your RPO, RTO, edition, and cost tolerance.

| # | Pattern | RPO | RTO | Cost | Complexity |
|---|---------|-----|-----|------|------------|
| 1 | Manual Catchup (single pipe) | Min–hrs | 30–90 min | Lowest | Low |
| 2 | Active-Active + Dedup | Zero | ~1 min | Highest | High |
| 3 | RA-GRS Read Pattern | Near-zero | 5–15 min | Medium | Medium |
| 4 | Active-Passive (SF + GRS) | Near-zero | 5–15 min | Medium | Medium |
| 5 | Snowflake-Only Failover Group | Near-zero | 5–15 min | Low–Med | Low |
| 6 | Dual Storage, Dual Pipes | Near-zero | 5–10 min | Medium | Medium |

Options 2–6 require **Business Critical Edition** for Failover Groups. On lower editions, only Option 1 applies.

## Decision

```
Business Critical?
├── No → Option 1
└── Yes
    ├── Zero data loss?           → Option 2
    ├── Azure is the failure?     → Option 4 or 6
    ├── Snowflake is the failure? → Option 5
    ├── Have RA-GRS?              → Option 3
    └── Budget constrained?       → Option 1 or 5
```

This skill is **Azure ADLS Gen2 only**. AWS S3 / GCS variants are out of scope.

## Core Rules

1. **Single writer per file set.** Only one pipe active per file set, except Option 2 (which dedups).
2. **Storage integration must allow both URLs:**
   ```sql
   STORAGE_ALLOWED_LOCATIONS = (
     'azure://<primary>.blob.core.windows.net/<container>/',
     'azure://<secondary>.blob.core.windows.net/<container>/'
   );
   ```
3. **`COPY_HISTORY` is replicated** in Failover Groups but only retains 14 days. For longer history, maintain a `FILE_LOAD_HISTORY` backup table.
4. **`ALTER PIPE ... REFRESH` is hard-capped at 7 days.** For older files, use `DIRECTORY(@stage)` + `COPY INTO`.
5. **Inbound notification integrations (`DIRECTION = INBOUND`) do NOT replicate.** After failover-group promotion you must recreate them with the same name in the DR account, re-establish Service Principal trust, and create the DR-region Event Grid subscription.

## Workflow

### Step 1 — Confirm prerequisites
- Edition (Business Critical for Options 2–6)
- Azure storage type (LRS / GRS / RA-GRS / GZRS / RA-GZRS)
- Event Grid + Storage Queue exists in target regions

### Step 2 — Implement chosen option

Each option follows the same shape: storage integration → stage → pipe (with `AUTO_INGEST=TRUE` and notification integration) → monitoring views → catchup procedure.

**Option 2 dedup hash columns:**
```sql
MD5(METADATA$FILENAME)                          AS FILE_HASH,
MD5(CONCAT_WS('|', $1, $2, $3, $4, $5))         AS RECORD_HASH,
'PRIMARY'                                       AS SOURCE_REGION
```
Dedup with a Dynamic Table: `QUALIFY ROW_NUMBER() OVER (PARTITION BY FILE_HASH, RECORD_HASH ORDER BY LOAD_TIMESTAMP) = 1`.

**Option 6 dual pipe pattern:**
```sql
CREATE PIPE PIPE_PRIMARY   AUTO_INGEST=TRUE INTEGRATION='NOTIF_INT_A' AS
  COPY INTO TARGET_TABLE (..., 'PRIMARY' AS _source_region)   FROM @STAGE_PRIMARY;
CREATE PIPE PIPE_SECONDARY AUTO_INGEST=TRUE INTEGRATION='NOTIF_INT_B' AS
  COPY INTO TARGET_TABLE (..., 'SECONDARY' AS _source_region) FROM @STAGE_SECONDARY;
ALTER PIPE PIPE_SECONDARY SET PIPE_EXECUTION_PAUSED = TRUE;
```

⚠️ STOPPING POINT: Show planned `CREATE STORAGE INTEGRATION`, `CREATE PIPE`, and `ALTER FAILOVER GROUP` statements to the user and wait for approval before executing.

### Step 3 — Validate

```sql
SELECT PARSE_JSON(SYSTEM$PIPE_STATUS('pipe_name')):executionState::STRING  AS state,
       PARSE_JSON(SYSTEM$PIPE_STATUS('pipe_name')):pendingFileCount::NUMBER AS pending;
```

Monitor pending files (`>1000` for `>15 min`), error rate from `SNOWFLAKE.ACCOUNT_USAGE.COPY_HISTORY` (`>5%/hr`), and load latency (`>30 min`).

### Step 4 — Failover / failback / catchup

```sql
ALTER PIPE pipe_primary   SET PIPE_EXECUTION_PAUSED = TRUE;
-- record checkpoint from COPY_HISTORY
ALTER PIPE pipe_secondary SET PIPE_EXECUTION_PAUSED = FALSE;
ALTER PIPE pipe_secondary REFRESH MODIFIED_AFTER = '<checkpoint-15min>';
```

⚠️ STOPPING POINT: Confirm the failover decision and the checkpoint timestamp with the user before pausing the primary pipe.

Catchup choices: `ALTER PIPE … REFRESH` (≤7 days), `COPY INTO … FROM @stage` (any age), or a cursor proc that diffs `DIRECTORY(@stage)` against `COPY_HISTORY` for an audit trail.

## Common Mistakes

| Mistake | Symptom | Fix |
|---|---|---|
| Both pipes running | Duplicate loads | Pause standby; use a failover proc |
| Secondary URL missing from integration | `ACCESS_DENIED` on failover | Recreate integration with both URLs |
| Relying on `COPY_HISTORY` past 14 days | Catchup finds nothing | Maintain `FILE_LOAD_HISTORY` table |
| No DR Event Grid subscription | `pendingFileCount = 0` post-failover | Create matching Event Grid + queue in DR region |
| `PIPE REFRESH` for old files | Files >7 days skipped silently | Switch to `DIRECTORY(@stage)` + `COPY INTO` |
| Pipe recreated without `AUTO_INGEST=TRUE` | Pipe stops auto-loading | Include `AUTO_INGEST=TRUE` and `INTEGRATION=` |
| Inbound notification integration not recreated post-failover | Pipe healthy but `pendingFileCount=0` | Recreate `DIRECTION=INBOUND` integration in DR account, re-grant Service Principal |

## Stopping Points

- Step 2 — wait for approval before running `CREATE`/`ALTER` for storage integrations, pipes, and failover groups.
- Step 4 — confirm the failover decision and checkpoint timestamp before pausing the active pipe.

## References

- [Stage, Pipe, and Load History Replication](https://docs.snowflake.com/en/user-guide/account-replication-stages-pipes-load-history)
- [Automating Snowpipe for Azure Blob Storage](https://docs.snowflake.com/en/user-guide/data-load-snowpipe-auto-azure)

From Kilo-Org/kilo-marketplace, Apache-2.0.

More from Kilo-Org/kilo-marketplace

Signals

Stars
195
Forks
328
Open issues
18
Last commit (this folder)
Jun 24, 2026 (4 months ago)
Last release
Sep 28, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Kilo-Org

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get snowpipe-bcdr running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying snowpipe-bcdr?

CallGet help
Cite this page

snowpipe-bcdr skill. Agent Mart. https://agentmart.dev/skills/kilo-org-snowpipe-bcdr (last updated 2026-10-24)