<?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 Lakeflow Connect: can't change general privilege requirements in Administration &amp; Architecture</title>
    <link>https://community.databricks.com/t5/administration-architecture/lakeflow-connect-can-t-change-general-privilege-requirements/m-p/113814#M3186</link>
    <description>&lt;P&gt;I want to set up Lakeflow Connect to ETL data from Azure SQL Server (Microsoft SQL Azure (RTM) - 12.0.2000.8 Feb 9 2025) using change tracking (we don't need the data retention of CDC).&amp;nbsp; In the documentation, there is a list off system tables, views and sprocs we need to grant the ETL user access to (&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/ingestion/lakeflow-connect/sql-server/database-user-requirements#general-privilege-requirements" target="_blank"&gt;https://learn.microsoft.com/en-us/azure/databricks/ingestion/lakeflow-connect/sql-server/database-user-requirements#general-privilege-requirements&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;When I try to update permissions on the system objects, I get the following error&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;Msg 40574, Level 16, State 1, Line 1&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Permissions for system stored procedures, server scoped catalog views, and extended stored procedures cannot be changed in this version of SQL Server.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Is this a known issue, and if so, is there a known way to work around trying to change permissions on system objects?&lt;/P&gt;</description>
    <pubDate>Thu, 27 Mar 2025 14:34:36 GMT</pubDate>
    <dc:creator>Rjdudley</dc:creator>
    <dc:date>2025-03-27T14:34:36Z</dc:date>
    <item>
      <title>Lakeflow Connect: can't change general privilege requirements</title>
      <link>https://community.databricks.com/t5/administration-architecture/lakeflow-connect-can-t-change-general-privilege-requirements/m-p/113814#M3186</link>
      <description>&lt;P&gt;I want to set up Lakeflow Connect to ETL data from Azure SQL Server (Microsoft SQL Azure (RTM) - 12.0.2000.8 Feb 9 2025) using change tracking (we don't need the data retention of CDC).&amp;nbsp; In the documentation, there is a list off system tables, views and sprocs we need to grant the ETL user access to (&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/ingestion/lakeflow-connect/sql-server/database-user-requirements#general-privilege-requirements" target="_blank"&gt;https://learn.microsoft.com/en-us/azure/databricks/ingestion/lakeflow-connect/sql-server/database-user-requirements#general-privilege-requirements&lt;/A&gt;).&lt;/P&gt;&lt;P&gt;When I try to update permissions on the system objects, I get the following error&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;&lt;EM&gt;Msg 40574, Level 16, State 1, Line 1&lt;/EM&gt;&lt;BR /&gt;&lt;EM&gt;Permissions for system stored procedures, server scoped catalog views, and extended stored procedures cannot be changed in this version of SQL Server.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;Is this a known issue, and if so, is there a known way to work around trying to change permissions on system objects?&lt;/P&gt;</description>
      <pubDate>Thu, 27 Mar 2025 14:34:36 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/lakeflow-connect-can-t-change-general-privilege-requirements/m-p/113814#M3186</guid>
      <dc:creator>Rjdudley</dc:creator>
      <dc:date>2025-03-27T14:34:36Z</dc:date>
    </item>
    <item>
      <title>Re: Lakeflow Connect: can't change general privilege requirements</title>
      <link>https://community.databricks.com/t5/administration-architecture/lakeflow-connect-can-t-change-general-privilege-requirements/m-p/121507#M3462</link>
      <description>&lt;P&gt;Got same issue. Did you find a way to configure required permissions?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 11 Jun 2025 16:35:32 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/lakeflow-connect-can-t-change-general-privilege-requirements/m-p/121507#M3462</guid>
      <dc:creator>andreys</dc:creator>
      <dc:date>2025-06-11T16:35:32Z</dc:date>
    </item>
    <item>
      <title>Re: Lakeflow Connect: can't change general privilege requirements</title>
      <link>https://community.databricks.com/t5/administration-architecture/lakeflow-connect-can-t-change-general-privilege-requirements/m-p/137461#M4346</link>
      <description>&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;You are hitting a known limitation in Azure SQL Database: it does not allow you to grant or modify permissions directly on most system objects, such as system stored procedures, catalog views, or extended stored procedures, resulting in the error "Msg 40574, Level 16, State 1, Line 1 - Permissions for system stored procedures, server scoped catalog views, and extended stored procedures cannot be changed in this version of SQL Server". This is not a bug but intentional: in Azure SQL Database, many server-level and some system-level permissions are simply not supported and cannot be changed by users.​&lt;/P&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Why This Happens&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Azure SQL Database (unlike SQL Server on-prem or Managed Instance) restricts direct changes to system object permissions for security and multi-tenancy reasons.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Many server/instance-level concepts are not available in Azure SQL Database, and permissions must be managed at the database level, not the server level.​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Lakeflow Connect Workaround &amp;amp; Permissions&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;For ETL scenarios using Lakeflow Connect with change tracking (not CDC), you&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;do not need&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to modify permissions on system objects directly.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Instead, focus on granting the following at the database and object level, as outlined in the Databricks documentation:&lt;/P&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;CODE&gt;VIEW CHANGE TRACKING&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;on tables and schemas that are being ingested.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;&lt;CODE&gt;VIEW DEFINITION&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;on the database being ingested.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Example T-SQL for these (replace with your user/table/database names):&lt;/P&gt;
&lt;DIV class="w-full md:max-w-[90vw]"&gt;
&lt;DIV class="codeWrapper text-light selection:text-super selection:bg-super/10 my-md relative flex flex-col rounded font-mono text-sm font-normal bg-subtler"&gt;
&lt;DIV class="translate-y-xs -translate-x-xs bottom-xl mb-xl flex h-0 items-start justify-end md:sticky md:top-[100px]"&gt;
&lt;DIV class="overflow-hidden rounded-full border-subtlest ring-subtlest divide-subtlest bg-base"&gt;
&lt;DIV class="border-subtlest ring-subtlest divide-subtlest bg-subtler"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="-mt-xl"&gt;
&lt;DIV&gt;
&lt;DIV class="text-quiet bg-subtle py-xs px-sm inline-block rounded-br rounded-tl-[3px] font-thin" data-testid="code-language-indicator"&gt;sql&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV&gt;&lt;SPAN&gt;&lt;CODE&gt;&lt;SPAN class="token token"&gt;-- For each tracked table:&lt;/SPAN&gt;
&lt;SPAN class="token token"&gt;GRANT&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;VIEW&lt;/SPAN&gt; CHANGE TRACKING &lt;SPAN class="token token"&gt;ON&lt;/SPAN&gt; OBJECT::dbo&lt;SPAN class="token token punctuation"&gt;.&lt;/SPAN&gt;&lt;SPAN class="token token operator"&gt;&amp;lt;&lt;/SPAN&gt;your&lt;SPAN class="token token operator"&gt;-&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;table&lt;/SPAN&gt;&lt;SPAN class="token token operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;TO&lt;/SPAN&gt; &lt;SPAN class="token token operator"&gt;&amp;lt;&lt;/SPAN&gt;etl&lt;SPAN class="token token operator"&gt;-&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;user&lt;/SPAN&gt;&lt;SPAN class="token token operator"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token token"&gt;-- At schema scope (alternative):&lt;/SPAN&gt;
&lt;SPAN class="token token"&gt;GRANT&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;VIEW&lt;/SPAN&gt; CHANGE TRACKING &lt;SPAN class="token token"&gt;ON&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;SCHEMA&lt;/SPAN&gt;::dbo &lt;SPAN class="token token"&gt;TO&lt;/SPAN&gt; &lt;SPAN class="token token operator"&gt;&amp;lt;&lt;/SPAN&gt;etl&lt;SPAN class="token token operator"&gt;-&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;user&lt;/SPAN&gt;&lt;SPAN class="token token operator"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;;&lt;/SPAN&gt;
&lt;SPAN class="token token"&gt;-- Grant view definition for the whole database:&lt;/SPAN&gt;
&lt;SPAN class="token token"&gt;GRANT&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;VIEW&lt;/SPAN&gt; DEFINITION &lt;SPAN class="token token"&gt;ON&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;DATABASE&lt;/SPAN&gt;::&lt;SPAN class="token token operator"&gt;&amp;lt;&lt;/SPAN&gt;your&lt;SPAN class="token token operator"&gt;-&lt;/SPAN&gt;db&lt;SPAN class="token token operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;TO&lt;/SPAN&gt; &lt;SPAN class="token token operator"&gt;&amp;lt;&lt;/SPAN&gt;etl&lt;SPAN class="token token operator"&gt;-&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;user&lt;/SPAN&gt;&lt;SPAN class="token token operator"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="token token punctuation"&gt;;&lt;/SPAN&gt;
&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;There is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;no supported way&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to bypass or "fix" the inability to change permissions on system objects—stick with object- and database-level grants as above.​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;If You Still Get Errors&lt;/H2&gt;
&lt;UL class="marker:text-quiet list-disc"&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;Double-check that you are not attempting to run&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;GRANT&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;statements referencing any system object, but only your user tables, schemas, or DB.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI class="py-0 my-0 prose-p:pt-0 prose-p:mb-2 prose-p:my-0 [&amp;amp;&amp;gt;p]:pt-0 [&amp;amp;&amp;gt;p]:mb-2 [&amp;amp;&amp;gt;p]:my-0"&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;If Databricks or Lakeflow Connect instructions refer to granting permissions on system objects that can't be modified in Azure SQL DB, you can safely omit those steps and just use the granular permissions above.​&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 class="mb-2 mt-4 font-display font-semimedium text-base first:mt-0"&gt;Summary Table&lt;/H2&gt;
&lt;DIV class="group relative"&gt;
&lt;DIV class="w-full overflow-x-auto md:max-w-[90vw] border-subtlest ring-subtlest divide-subtlest bg-transparent"&gt;
&lt;TABLE class="border-subtler my-[1em] w-full table-auto border-separate border-spacing-0 border-l border-t"&gt;
&lt;THEAD class="bg-subtler"&gt;
&lt;TR&gt;
&lt;TH class="border-subtler p-sm break-normal border-b border-r text-left align-top"&gt;Object Type&lt;/TH&gt;
&lt;TH class="border-subtler p-sm break-normal border-b border-r text-left align-top"&gt;Can Permission Be Changed?&lt;/TH&gt;
&lt;TH class="border-subtler p-sm break-normal border-b border-r text-left align-top"&gt;Workaround/Azure SQL Approach&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;User tables/schemas/databases&lt;/TD&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;Yes&lt;/TD&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;Use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;GRANT&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;as documented&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;​&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;System stored procs/views/tables&lt;/TD&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;No&lt;/TD&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;Not supported, ignore/omit&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;​&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;Change tracking metadata&lt;/TD&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;Yes (object/schema level only)&lt;/TD&gt;
&lt;TD class="px-sm border-subtler min-w-[48px] break-normal border-b border-r"&gt;Use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE&gt;VIEW CHANGE TRACKING&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;​&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;/DIV&gt;
&lt;DIV class="bg-base border-subtler shadow-subtle pointer-coarse:opacity-100 right-xs absolute bottom-0 flex rounded-lg border opacity-0 transition-opacity group-hover:opacity-100 [&amp;amp;&amp;gt;*:not(:first-child)]:border-subtle [&amp;amp;&amp;gt;*:not(:first-child)]:border-l"&gt;
&lt;DIV class="flex"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="flex"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="my-2 [&amp;amp;+p]:mt-4 [&amp;amp;_strong:has(+br)]:inline-block [&amp;amp;_strong:has(+br)]:pb-2"&gt;You should not attempt or expect to grant rights on system-level SQL objects in Azure SQL Database, and should instead use the per-database/object permissions specifically documented for your ETL scenario.​&lt;/P&gt;</description>
      <pubDate>Mon, 03 Nov 2025 21:16:07 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/lakeflow-connect-can-t-change-general-privilege-requirements/m-p/137461#M4346</guid>
      <dc:creator>mark_ott</dc:creator>
      <dc:date>2025-11-03T21:16:07Z</dc:date>
    </item>
  </channel>
</rss>

