title: Permissions issue in SSMS: "The SELECT permission was denied on the object 'extended_properties', database 'mssqlsystem_resource', ... Error 229)"
body: <p>Here’s the simplest repro case possible.</p>
  
  <ol>
  <li>Create a brand new database. (I'm using SQL 2005.)</li>
  <li>Create a login, a SQL user, and a table in the new database (see sample code below).</li>
  <li>Launch SSMS and open Object Explorer, logging in <strong>as the newly-created user</strong>.</li>
  <li>Attempt to open the "Tables" folder in the Object Explorer.</li>
  </ol>
  
  <h2>The Problem</h2>
  
  <p>Fails with <strong><a href="http://4.bp.blogspot.com/_KzXtwuR1Gmk/S0Ji8SjKSMI/AAAAAAAAC7k/o74ccJKTLpI/s1600-h/SSMS_Error.PNG" rel="noreferrer">this error message</a></strong>.</p>
  
  <p><strong>Message Text:</strong></p>
  
  <blockquote>TITLE: Microsoft SQL Server Management Studio<br/>
  Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)<br/>
  For help, click: <a href="http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476" rel="noreferrer">link</a><br/>
  ADDITIONAL INFORMATION:<br/>
  An exception occurred while executing a Transact-SQL statement or batch.
  (Microsoft.SqlServer.ConnectionInfo)<br/>
  The SELECT permission was denied on the object 'extended_properties', database mssqlsystemresource', schema 'sys'. (Microsoft SQL Server, Error: 229)<br/>
  For help, click: <a href="http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.3282&EvtSrc=MSSQLServer&EvtID=229&LinkId=20476" rel="noreferrer">link</a></blockquote>
  
  <p>This user <em>can</em> access the table and the record in the table. But the user <em>cannot</em> access the list of tables in Object Explorer.</p>
  
  <pre><code>SELECT USER_NAME() AS CurrentUser, col1
  FROM dbo.TestTable
  
  CurrentUser col1
  ----------- ----
  robg_test   1000
  </code></pre>
  
  <p>The only work-around I have found is to give the user higher-than-necessary privileges (like db_datareader).</p>
  
  <h2>The Question:</h2>
  
  <p>What is the <em>minimum</em> privilege required to allow this user to open the table list in Object Explorer?</p>
  
  <p>I have tried granting the user various privileges on the dbo schema, but that did not help.</p>
  
  <p>Note also that I am using a SQL user simply to illustrate the problem. The original problem was with an AD user.</p>
  
  <p><a href="https://serverfault.com/questions/43606/what-permissions-might-be-missing-on-error-229-from-tables-node-on-ssms-object">Here</a> is a relatively similar question at serverfault.</p>
  
  <hr>
  
  <h2>Code</h2>
  
  <pre><code>SET NOCOUNT ON
  USE master
  GO
  IF EXISTS (SELECT * FROM sys.server_principals WHERE name = N'robg_test')
      DROP LOGIN [robg_test]
  GO
  CREATE LOGIN [robg_test]
  WITH
      PASSWORD         = N'CLK63!!black',
      DEFAULT_DATABASE = [RGTest],
      DEFAULT_LANGUAGE = [us_english],
      CHECK_EXPIRATION = OFF,
      CHECK_POLICY     = ON
  GO
  
  IF EXISTS (SELECT * FROM sys.databases WHERE name = 'RGTest')
      DROP DATABASE [RGTest]
  GO
  CREATE DATABASE [RGTest]
  GO
  USE [RGTest]
  GO
  CREATE USER [robg_test] FOR LOGIN [robg_test] WITH DEFAULT_SCHEMA = [dbo]
  GO
  CREATE TABLE dbo.TestTable (col1 int)
  GO
  GRANT SELECT ON dbo.TestTable TO [robg_test]
  GO
  INSERT INTO dbo.TestTable VALUES (1000)
  GO
  </code></pre>