20200114-SQLServer通过链接服务器查询表报错 “消息 7313,级别 16”

在这里插入图片描述

问题:

通过链接服务器查询某张表时报错如下:

select top 10 * from [172.100.100.20] .[CJCDB] .[dbo] .[t1] ;
消息 7313 ,级别 16 ,状态 1 ,第 1 行
为链接服务器 "172.100.100.20" 的访问接口 "SQLNCLI11" 指定了无效的架构或目录。

问题原因:

通过链接服务器查询其他表正常,并且在 172.100.100.20本地 查询 t1 表也正常;

select top 10 * from t1;

服务器对象— 链接服务器 找 到对应的表—查询正常,没有报错
在这里插入图片描述

SELECT [XXID]
      ,[XXNum]
      ,[XXJID]
  FROM [172.100.100.20] .[CJCDB] .[dbo] .[T1 ]
GO

发现表名后面有空格!!!

解决方案:

加上空格查询正常;

select top 10 * from [172.100.100.20] .[CJCDB] .[dbo] .[t1 ] ;

查询哪些表名带有空格

select * from sys . objects where type = 'U' and name like '% %';

欢迎关注我的微信公众号"IT小Chen"

<think> 我们正在解决SSMS报错“不支持用该后端版本设计数据库关系图或表”的问题。 根据引用[1],这个问题可能与DAC(专用管理员连接)有关,但更常见的原因是SSMS版本与SQL Server实例版本不匹配。 通常,SSMS的高版本可以兼容低版本的SQL Server,但低版本的SSMS无法设计高版本SQL Server创建的数据库。 解决步骤: 1. 确认SQL Server实例的版本。 2. 确认SSMS的版本,确保SSMS版本不低于SQL Server实例的版本。 3. 如果版本不匹配,升级SSMS到与SQL Server相同或更高版本。 详细步骤: 步骤1:查询SQL Server实例版本 在SSMS中新建查询,执: ```sql SELECT @@VERSION; ``` 或者 ```sql SELECT SERVERPROPERTY(&#39;ProductVersion&#39;); ``` 步骤2:查看SSMS版本 在SSMS菜单中:帮助 -> 关于 Microsoft SQL Server Management Studio 步骤3:版本匹配原则 - SQL Server 2008 R2 及更早版本:需要使用对应版本的SSMS(如SSMS 2008 R2- SQL Server 20122016:可以使用SSMS 17.x 或 18.x(但建议使用与SQL Server版本匹配的SSMS) - SQL Server 2017及以上:建议使用SSMS 18.x 或更新版本(目前最新为19.x) 注意:从SQL Server 2016开始,SSMS独立于SQL Server发布,且向后兼容。 步骤4:升级SSMS 如果SSMS版本低于SQL Server版本,请从微软官网下载最新版SSMS: https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms 其他可能原因: - 数据库兼容级别过低:在数据库属性中检查兼容级别,如果兼容级别低于当前SQL Server版本支持的最低级别,可能会出现问题。但此问题通常不会导致设计表功能完全不可用。 - 权限问题:确保登录用户具有设计表的权限(如db_owner角色)。 如果问题仍然存在,尝试重新安装最新版SSMS。 如果无法升级SSMS,可以使用T-SQL语句创建表(不需要图形界面): ```sql CREATE TABLE [dbo].[TableName]( [ID] [int] PRIMARY KEY, [Name] [nvarchar](50) NOT NULL ) ``` 或者,使用较低版本的SSMS连接到较高版本的SQL Server时,可以尝试设置数据库的兼容级别(但此方法不一定能解决设计器问题): ```sql ALTER DATABASE [DatabaseName] SET COMPATIBILITY_LEVEL = 版本号; -- 版本号对应关系:SQL Server 2008为10020121102014为1202016为1302017为1402019为1502022160 ``` 注意:修改兼容级别不会降级数据库引擎的功能,只是使数据库引擎的为与指定版本兼容。 如果上述方法均无效,可能是SSMS安装损坏,建议修复或重新安装SSMS。 引用说明: [^1]: 引用内容是关于DAC连接的说明,但与本问题关联性不强。我们主要关注版本匹配问题。 </think>### 解决 SSMS 中“不支持用该后端版本设计数据库关系图或表”报错 此错误通常发生在 **SSMS 版本与 SQL Server 实例版本不兼容**时。以下是系统化的解决方案: --- #### 1. **验证版本兼容性** [^1] ```sql -- 查询SQL Server实例版本 SELECT @@VERSION AS &#39;SQL Server Version&#39;; ``` - **版本匹配原则**: - SSMS 19.x ➔ SQL Server 2012 及以上 - SSMS 18.x ➔ SQL Server 2008 及以上 - SSMS 17.x ➔ SQL Server 2005 及以上 - **不兼容场景**: - 旧版 SSMS 连接新版 SQL Server(如 SSMS 2014 连接 SQL Server 2019- 新版 SSMS 连接过旧的 SQL Server(如 SSMS 19.x 连接 SQL Server 2000--- #### 2. **解决方案** ##### ✅ 方案1:升级 SSMS 1. 下载最新版 SSMS: [官方下载地址](https://docs.microsoft.com/zh-cn/sql/ssms/download-sql-server-management-studio-ssms) 2. 卸载旧版本后安装新版 ##### ✅ 方案2:修改数据库兼容级别 ```sql --数据库兼容级别设为当前SQL Server版本 ALTER DATABASE [YourDB] SET COMPATIBILITY_LEVEL = 160; -- 150=SQL2019, 160=SQL2022 ``` > 注意:此操作不影响实际数据,仅改变引擎为 ##### ✅ 方案3:降级连接方式 1. 在 SSMS 连接时选择较低协议版本: ![连接属性设置](https://docs.microsoft.com/zh-cn/sql/ssms/media/connect-to-server-connection-properties.png?view=sql-server-ver16) 2. 将 **网络协议** 改为 `Named Pipes` 或 `Shared Memory` --- #### 3. **替代设计方法** 当图形界面不可用时: ```sql -- 使用T-SQL创建表 CREATE TABLE Employees ( EmployeeID INT PRIMARY KEY IDENTITY(1,1), FirstName NVARCHAR(50) NOT NULL, LastName NVARCHAR(50) NOT NULL, HireDate DATE DEFAULT GETDATE(), CONSTRAINT CHK_HireDate CHECK (HireDate > &#39;2000-01-01&#39;) ); ``` --- #### 4. **权限检查** 确保登录账号拥有: ```sql -- 必要权限 GRANT ALTER ON SCHEMA::dbo TO [YourUser]; GRANT CREATE TABLE TO [YourUser]; ``` > ⚠️ 若使用 DAC(专用管理员连接),需通过**查询窗口**连接: > `文件 → 新建 → 数据库引擎查询 → 输入 admin:服务器名` [^1] --- #### 5. **终极方案** 若以上均无效: 1. 安装与 SQL Server **同版本** 的 SSMS - SQL Server 2019 ➔ SSMS 18.x - SQL Server 2016 ➔ SSMS 17.x 2. 使用跨平台工具: - [Azure Data Studio](https://docs.microsoft.com/zh-cn/sql/azure-data-studio/download-azure-data-studio) - [DBeaver](https://dbeaver.io/) --- ### 版本兼容对照表 | SQL Server 版本 | 最低 SSMS 版本 | 兼容级别 | |----------------|---------------|---------| | 2022 | SSMS 19.x | 160 | | 2019 | SSMS 18.5+ | 150 | | 2017 | SSMS 17.2+ | 140 | | 2016 | SSMS 16.x | 130 | | 2014 | SSMS 12.x | 120 | [^1]: SSMS版本兼容性文档
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值