2017-01-25 7 views
1

私のサーバー上には最近、多くのデータベースがあります(私はdboを利用しています)がSSMSでアクセスできなくなっています。私は、このデータベースのための「オブジェクトエクスプローラ」で、テーブルノードを展開すると、私は次のエラーを取得する:Microsoft SQL Server 2016 - SSMS、データベースのテーブルを展開することはできません

Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression. (.Net SqlClient Data Provider)

しかし、私はそのデータベースで正常に選択を実行することができますし、他のユーザーが、この問題を持っていません。

私は持っています。

  1. 誤った設定のログインを確認しました。
  2. ユーザーの設定が間違っているかどうかを確認しました。
  3. SQL Serverエンジンを再起動しました。
  4. インストーラユーティリティを使用してSSMSを修復しました。

あなたの入力を非常に感謝しますか?私は困惑しています(これはこれまでに起こったことではありません)。

EDIT:SQLプロファイラを使用してトレースした後、このイベントが発生したため、クエリを抽出してSSMSセッションウィンドウで実行しました。返される結果は、間違ったデータベースからのものです。

EDIT:これに加えて、dbcc checkdb(databasename)を実行してもエラーは返されませんでした。マスターに対しても同様にエラーは返されませんでした。

編集:私は、テーブル]フォルダを展開したときに、クエリが実行されている:

exec sp_executesql N'SELECT 
tbl.name AS [Name], 
SCHEMA_NAME(tbl.schema_id) AS [Schema], 
''Server[@Name='' + quotename(CAST(
     serverproperty(N''Servername'') 
     AS sysname),'''''''') + '']'' + ''/Database[@Name='' + quotename(db_name(),'''''''') + '']'' + ''/Table[@Name='' + quotename(tbl.name,'''''''') + '' and @Schema='' + quotename(SCHEMA_NAME(tbl.schema_id),'''''''') + '']'' AS [Urn], 
tbl.create_date AS [CreateDate], 
CAST(tbl.is_memory_optimized AS bit) AS [IsMemoryOptimized], 
CAST(CASE idx.type WHEN 5 THEN 1 ELSE 0 END AS bit) AS [HasClusteredColumnStoreIndex], 
CAST(tbl.is_remote_data_archive_enabled AS bit) AS [RemoteDataArchiveEnabled], 
tbl.temporal_type AS [TemporalType], 
CAST(CASE WHEN ''PS''=dsidx.type THEN 1 ELSE 0 END AS bit) AS [IsPartitioned], 
CAST(
     ISNULL((SELECT 1 from sys.all_columns 
       WHERE object_id = tbl.object_id 
       AND is_sparse = 1), 0) 
     AS bit) AS [HasSparseColumn] 
FROM 
sys.tables AS tbl 
LEFT OUTER JOIN sys.periods as periods ON periods.object_id = tbl.object_id 
LEFT OUTER JOIN sys.tables as historyTable ON historyTable.object_id = tbl.history_table_id 
INNER JOIN sys.indexes AS idx ON 
     idx.object_id = tbl.object_id and (idx.index_id < @_msparam_0 or (tbl.is_memory_optimized = 1 and idx.index_id = (select min(index_id) from sys.indexes where object_id = tbl.object_id))) 

LEFT OUTER JOIN sys.data_spaces AS dsidx ON dsidx.data_space_id = idx.data_space_id 
WHERE 
(CAST(
case 
    when tbl.is_ms_shipped = 1 then 1 
    when (
     select 
      major_id 
     from 
      sys.extended_properties 
     where 
      major_id = tbl.object_id and 
      minor_id = 0 and 
      class = 1 and 
      name = N''microsoft_database_tools_support'') 
     is not null then 1 
    else 0 
end   
      AS bit)[email protected]_msparam_1 and [email protected]_msparam_2 and CAST(tbl.is_memory_optimized AS bit)[email protected]_msparam_3 and [email protected]_msparam_4 and CAST(tbl.is_external AS bit)[email protected]_msparam_5) 
ORDER BY 
[Schema] ASC,[Name] ASC',N'@_msparam_0 nvarchar(4000),@_msparam_1 nvarchar(4000),@_msparam_2 nvarchar(4000),@_msparam_3 nvarchar(4000),@_msparam_4 nvarchar(4000),@_msparam_5 nvarchar(4000)',@_msparam_0=N'2',@_msparam_1=N'0',@_msparam_2=N'0',@_msparam_3=N'0',@_msparam_4=N'0',@_msparam_5=N'0' 

EDIT:回避策として、私はここを私のテーブルにアクセスすることができますSSMS 2014を再インストールしました。

+0

ランダムなトレース不可能なエラーが発生すると、通常はトリガーになります(ここでは何も編集していませんが)。データベース・トリガーはありますか?オブジェクトブラウザを使用して見つけることができない場合は、おそらく 'sys.triggers'を使用することができます –

+0

@ nick-mcdermaid:問題のデータベースに対して** select * from sys.triggers **を実行しました。 。 – j3r0

+0

私は答えがありません - 私はちょうどものを提案するつもりです。私の次の提案は、SQLプロファイラでクエリをトレースしています。 –

答えて

0

データベースと間違って何もありません

SELECT 
    NAME 
FROM [base].SYS.triggerS 
WHERE parent_class_desc = 'DATABASE' 

は、トリガー名を取り、

DISABLE TRIGGER [dbo].[trigger_name] 
+0

上記を読めば、私たちはトリガーを探していることがわかります。トリガはSSISプロセスで作成され、キューブで使用される倉庫なので、私はトリガを期待していません。 – j3r0

2

次の手順を実行しています、それを試してみて、それがSSMS 16.5.2の既知の問題だと持っています製品チームに報告されています。あまりにも多くの問題を引き起こす場合は、SSMSの以前のリリースに戻してください。詳細はthreadを参照してください。

明らかに、これはデータベースに複数のスパース列があるテーブルがある場合にのみ発生します。

+0

SSMSをアンインストールしてSSMS 16.4.1に戻しましたが、問題は解決しません。 – j3r0

関連する問題