<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake in Data Engineering</title>
    <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177390#M16110</link>
    <description>&lt;P&gt;I found the root cause, I checked and found that one of my college set grant future ownership to role CICD, that's why new stage always goes to role CICD. Thanks for your help!!!&lt;/P&gt;</description>
    <pubDate>Mon, 04 May 2026 10:33:44 GMT</pubDate>
    <dc:creator>harrybao0901</dc:creator>
    <dc:date>2026-05-04T10:33:44Z</dc:date>
    <item>
      <title>Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5160483#M16059</link>
      <description>&lt;P&gt;I am using Pipeline item in Fabric to ingest data from SQL Server to Snowflake. I already granted the role some minimal permisisons like USAGE ON WAREHOUSE,&amp;nbsp;USAGE ON DATABASE, USAGE ON SCHEMA; GRANT INSERT, SELECT, TRUNCATE ON TABLE; GRANT CREATE STAGE ON SCHEMA, GRANT CREATE FILE FORMAT ON SCHEMA, GRANT CREATE TEMPORARY TABLE ON SCHEMA. But i still hit error when running Copy Data activity. What permission should I grant to the role ? Also, does Pipeline item support Incremental load when loading data from SQL Server to Snowflake ?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your help!!! Much appreciate it.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2026 03:15:54 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5160483#M16059</guid>
      <dc:creator>harrybao0901</dc:creator>
      <dc:date>2026-04-29T03:15:54Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5160747#M16062</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/1586964"&gt;@harrybao0901&lt;/a&gt;&amp;nbsp;&amp;nbsp;,&lt;BR /&gt;Thanks for reaching out to the Microsoft fabric community forum.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You already granted most of the required permissions for the Pipeline Copy activity. In some cases, Fabric may also require additional permissions such as CREATE TABLE on the target schema (if auto-create is enabled) and OPERATE on the warehouse. The pipeline can also create temporary objects internally during the load process, so missing permissions on those objects may cause the activity to fail. Sharing the exact error message from the Copy activity would help identify the missing permission more accurately.&lt;/P&gt;
&lt;P&gt;Yes, Fabric Pipeline does support incremental load from Microsoft SQL Server to Snowflake. This is usually implemented using a watermark column such as LastModifiedDate or by using SQL Server change tracking/CDC, so that only new or updated records are copied during each pipeline run.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;If I misunderstand your needs or you still have problems on it, please feel free to let us know. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best Regards,&amp;nbsp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;Community Support Team&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2026 09:46:20 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5160747#M16062</guid>
      <dc:creator>v-menakakota</dc:creator>
      <dc:date>2026-04-29T09:46:20Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5160793#M16064</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/1586964"&gt;@harrybao0901&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The issue is about missing permissions for how Snowflake loads data.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Fabric Copy activity typically uses Snowflake's native loading (such as COPY INTO), which loads data to a stage instead of directly to the table.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;So just table level permissions just won’t do it.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Additional permissions required&lt;BR /&gt;Stage: USAGE, READ, WRITE&lt;BR /&gt;File format USAGE&lt;BR /&gt;Storage Integration: USAGE (when using external stage)&lt;BR /&gt;Reference (Snowflake) :&lt;BR /&gt;&lt;A title="Snowflake Documentation " href="https://docs.snowflake.com/en/sql-reference/sql/copy-into-table" target="_self"&gt;Snowflake Documentation &lt;/A&gt;&lt;BR /&gt;Incremental Load Yes – supported, but must be done manually (e.g. watermark or Change Data Capture, CDC).&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Microsoft (Reference)&lt;BR /&gt;&lt;A title="How to copy data using copy activity" href="https://learn.microsoft.com/fabric/data-factory/copy-data-activity" target="_self"&gt;How to copy data using copy activity&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;Hint&lt;BR /&gt;Check the error message, it will tell you if the missing permission is for stage, file format or integration.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Apr 2026 11:32:50 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5160793#M16064</guid>
      <dc:creator>Olufemi7</dc:creator>
      <dc:date>2026-04-29T11:32:50Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5161174#M16079</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/843006"&gt;@Olufemi7&lt;/a&gt;&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/882994"&gt;@v-menakakota&lt;/a&gt;&amp;nbsp;, thanks for replying.&lt;/P&gt;&lt;P&gt;This is the error that I mentioned, I can see the stages created in the schema in Snowflake (it showed as External Stages), but I do not have the access to it even though I have the owner role. Another strange thing is I use Role A to run the pipeline in Fabric, but the created stages is owned by role B - And when I use role B to access that external stages, it showed error with permission (same as the one below when running the pipeline in Fabric):&lt;/P&gt;&lt;P&gt;ErrorCode=GenericAdoNetReadError,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Failed to execute the query command during read operation.,Source=Microsoft.DataTransfer.Connectors.GenericAdoNet,''Type=Apache.Arrow.Adbc.C.CAdbcDriverImporter+ImportedAdbcException,Message=[Snowflake] 002003 (02000): SQL compilation error:&lt;BR /&gt;Stage 'database.schema."adf_stage_import_f466ef83b77748798685d6bc8f1d3561"' does not exist or not authorized.,Source=Apache.Arrow.Adbc,'&lt;/P&gt;</description>
      <pubDate>Sun, 03 May 2026 06:24:36 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5161174#M16079</guid>
      <dc:creator>harrybao0901</dc:creator>
      <dc:date>2026-05-03T06:24:36Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177049#M16097</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hello &lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/1586964"&gt;@harrybao0901&lt;/a&gt;,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;From that error, this doesn’t look like a basic permission issue anymore.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;If the stage (adf_stage_import_) is already getting created, then the failure is happening when Snowflake tries to actually use it. The “does not exist or not authorized” message in this case is a bit misleading, it often shows up when the stage is there, but Snowflake can’t access the external location behind it.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The role behavior you’re seeing (Role A vs Role B) also lines up with that. Fabric can run the COPY using the role defined in the connection, not necessarily the one you expect, so the stage ends up owned by a different role.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;At that point, the usual cause is:&lt;BR /&gt;no USAGE on the storage integration, or&lt;BR /&gt;no access to the underlying storage (Blob / ADLS / S3)&lt;BR /&gt;That would explain why even the owning role can’t use the stage.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;Check:&lt;BR /&gt;which role is set in the Snowflake connection&lt;BR /&gt;whether that role has USAGE on the storage integration and whether the external storage permissions are correct&lt;BR /&gt;If this keeps happening, a simple workaround is to create a stage yourself, grant the right permissions to your role, and use that instead of the auto-created adf_stage_import_.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Incremental load is supported, but you have to implement it yourself (watermark or CDC).&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 03 May 2026 21:21:48 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177049#M16097</guid>
      <dc:creator>Olufemi7</dc:creator>
      <dc:date>2026-05-03T21:21:48Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177117#M16098</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/843006"&gt;@Olufemi7&lt;/a&gt;&amp;nbsp;, I noticed that both role have USAGE permission, but in schema X role A was granted earlier so it's executable (I use role B to execute pipeline in Fabric). However, in schema Y, role A was granted after role B. I dunno how exactly Snowflake would handle stuffs like this, I am trying to find their docs for explanation.&lt;/P&gt;</description>
      <pubDate>Mon, 04 May 2026 03:32:17 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177117#M16098</guid>
      <dc:creator>harrybao0901</dc:creator>
      <dc:date>2026-05-04T03:32:17Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177119#M16099</link>
      <description>&lt;P&gt;I tried to create a container in ADLS gen 2 to land stage their, but Fabric did not let me do that, it shows this when I do that in settings copy data activity.&lt;BR /&gt;&lt;SPAN&gt;Azure Data Lake Storage Gen2 is not supported in staging settings when using Snowflake sink dataset&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 04 May 2026 03:36:10 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177119#M16099</guid>
      <dc:creator>harrybao0901</dc:creator>
      <dc:date>2026-05-04T03:36:10Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177238#M16105</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/1586964"&gt;@harrybao0901&lt;/a&gt;,&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;1. ADLS Gen2 staging&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;This is expected behavior.&lt;/P&gt;&lt;P class=""&gt;When using Snowflake as the sink, Fabric Copy activity does not support configuring ADLS Gen2 as a staging location. The staging process is handled internally by Fabric and Snowflake, so you cannot create or select an external container for this scenario.&lt;/P&gt;&lt;P class=""&gt;References:&lt;BR /&gt;&lt;A href="https://learn.microsoft.com/fabric/data-factory/copy-data-activity" target="_blank" rel="noopener"&gt;&lt;SPAN class=""&gt;https://learn.microsoft.com/fabric/data-factory/copy-data-activity&lt;/SPAN&gt;&lt;/A&gt;&lt;BR /&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/data-factory/connector-snowflake" target="_blank" rel="noopener"&gt;&lt;SPAN class=""&gt;https://learn.microsoft.com/en-us/azure/data-factory/connector-snowflake&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;P class=""&gt;So this is not a permission or configuration issue on your side.&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;2. Role grant order (Role A vs Role B)&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;Snowflake does not use the order of role grants to determine access.&lt;/P&gt;&lt;P class=""&gt;From Snowflake access control model:&lt;BR /&gt;&lt;A href="https://docs.snowflake.com/en/user-guide/security-access-control-overview" target="_blank" rel="noopener"&gt;&lt;SPAN class=""&gt;https://docs.snowflake.com/en/user-guide/security-access-control-overview&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Access is evaluated at runtime&lt;/LI&gt;&lt;LI&gt;Only the active role matters&lt;/LI&gt;&lt;LI&gt;Grant timing (before or after another role) has no effect on execution&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;So differences between schema X and schema Y are not related to when roles were granted.&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;3. Original issue (least privilege for Pipeline ingestion)&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;For Fabric Pipeline (SQL Server → Snowflake), the role needs:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Warehouse: USAGE&lt;/LI&gt;&lt;LI&gt;Database/Schema: USAGE&lt;/LI&gt;&lt;LI&gt;Table: INSERT, SELECT (DELETE/TRUNCATE optional depending on load pattern)&lt;/LI&gt;&lt;LI&gt;Schema-level: CREATE STAGE, CREATE FILE FORMAT (if Fabric creates them)&lt;/LI&gt;&lt;LI&gt;If external staging is used: USAGE on storage integration + stage access&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;Incremental load is supported, but it is not automatic. You need to implement it using:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;watermark column logic, or&lt;/LI&gt;&lt;LI&gt;CDC-based approach&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;ADLS staging is not supported in this scenario (by design)&lt;/LI&gt;&lt;LI&gt;Role grant order does not affect Snowflake execution&lt;/LI&gt;&lt;LI&gt;Pipeline permissions depend on correct alignment of table, schema, and staging access&lt;/LI&gt;&lt;LI&gt;Incremental load must be implemented manually&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;This aligns with Fabric and Snowflake behavior for this scenario.&lt;/P&gt;</description>
      <pubDate>Mon, 04 May 2026 06:31:45 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177238#M16105</guid>
      <dc:creator>Olufemi7</dc:creator>
      <dc:date>2026-05-04T06:31:45Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177390#M16110</link>
      <description>&lt;P&gt;I found the root cause, I checked and found that one of my college set grant future ownership to role CICD, that's why new stage always goes to role CICD. Thanks for your help!!!&lt;/P&gt;</description>
      <pubDate>Mon, 04 May 2026 10:33:44 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177390#M16110</guid>
      <dc:creator>harrybao0901</dc:creator>
      <dc:date>2026-05-04T10:33:44Z</dc:date>
    </item>
    <item>
      <title>Re: Least Privilege for Pipeline item to ingest data from SQL Server to Snowflake</title>
      <link>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177856#M16118</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://community.fabric.microsoft.com/t5/user/viewprofilepage/user-id/1586964"&gt;@harrybao0901&lt;/a&gt;&amp;nbsp;,&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;Good to hear you were able to identify the root cause that explains the behavior you were seeing.&lt;/P&gt;
&lt;P&gt;Appreciate you sharing the finding here, it’ll be useful for others who might run into a similar situation.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;P&gt;Best Regards,&amp;nbsp;&lt;BR /&gt;Community Support Team&lt;/P&gt;</description>
      <pubDate>Tue, 05 May 2026 06:30:01 GMT</pubDate>
      <guid>https://community.fabric.microsoft.com/t5/Data-Engineering/Least-Privilege-for-Pipeline-item-to-ingest-data-from-SQL-Server/m-p/5177856#M16118</guid>
      <dc:creator>v-menakakota</dc:creator>
      <dc:date>2026-05-05T06:30:01Z</dc:date>
    </item>
  </channel>
</rss>

