博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DB相关问题
阅读量:4943 次
发布时间:2019-06-11

本文共 2508 字,大约阅读时间需要 8 分钟。

一、无法连接到SQL数据库

问题:连接到服务器------------------------------无法连接到 .。

  其他信息:在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。 (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 

解决:

  心想应该是服务中有什么没开启的,果然SQL Server(MSSQLSERVER)未开启,而且碰到开启出错的情况,后来就搜解决方案,将“Microsoft SQL Server 2012 Express LocalDB”卸载。再开启,成功。之后就可连接数据库了。

原因:

  可能是这台电脑之前安装了 visual studio 2012,内置的SQl server 2012与之冲突,导致新的2008 R2 版本过低导致。

二、运用EF 部署在服务器中报错:基础提供程序在 Open 上失败

  可能是web.config中的数据库连接字符串有问题。检查下以下节点:

或者是

iPersist Security Info=True;User ID=sa;Password=xxxx;

三、用Navicat连接sqlserver报错:要连接到sql server,您需要安装sql server native client

  解决方法:其实navicat自带sqlncli_x64.msi,就在安装目录下,安装后问题解决!

 

   局域网内连接时,可查看所有安装了数据库的服务器

 

四、修改表设计后,保存报错:不允许保存更改

解决方法:

工具-》选项,取消“阻止保存要求重新创建表的更改”复选框

是因为SQL Server为了防止数据表被随意更改,默认在创建后不允许更改表的结构。

五、仅当使用了列列表并且 IDENTITY_INSERT ON 时,才能为表'XXX中的标识列指定显式值

  在进行数据插入时,如果插入列名包括标识列(自增长),如果要显示的指定其值,可能报错

解决:标识列(自动编号)

SET IDENTITY_INSERT TABLE_NAME ON;INSERT INTO TABLE_NAME(XXX, XXX,..., XXX) SELECT XXX, XXX,..., XXX FROM TABLE_NAME_BAK;--注意: 即使是所有列,这里的字段名(标识列)也不能省略.SET IDENTITY_INSERT TABLE_NAME OFF;

1、要对数据表的标识列执行插入操作进,先要设置该数据表identity_insert为on;同时要列出些标识列(当然,同时也就需要列出相关的其他列了);

2、每一次连接会话中的任一时刻,只能对一个表设置IDENTITY_INSERT ON,且设置只对当前会话有效。

六、SqlConnection连接释放的说明

  • close()与Dispose()  

Close方法关闭了连接;Dispose方法调用了Close方法,同时清空了连接字符串

using表示在{}区间后,自动调用Dispose方法,保证对象被销毁。 using只能用在继承了IDispose接口的类上

所以,调用Close方法后还可以调用Open方法打开连接。调用Dispose方法后就不能再打开了,因为connectionstring清空了,会抛出InvalidOperationException,但是给连接字符串重新赋值后就又能打开了

也就是说Dispose方法和Close方法都没有释放Connection对象。

  • 连接池的作用:

Connection对象在调用Close或者Dispose方法之后就会进入到连接池。当再次用到与这个Connection对象拥有相同的连接字符串的连接对象时就会从这个连接池中取出这个Connection对象,而不是重新创建一个。

  • 连接池创建和分配:

创建第一个Connection对象并打开连接时就会创建一个连接池。连接池与连接字符串完全匹配,如果以后的的Connection对象的连接字符串与某一个连接池的完全匹配就会把这个Connection对象放入到相应的连接池中,否则就会创建一个新的连接池。

  • 添加连接:

连接池是为每个唯一的连接字符串创建的。 当创建一个池后,将创建多个连接对象并将其添加到该池中,以满足最小池大小的要求。 连接根据需要添加到池中,但是不能超过指定的最大池大小(默认值为 100)。 连接在关闭或断开时释放回池中。

由此得出的结论是:不管是dispose还是close都不会销毁对象,即不会释放内存,它们会把sqlconnection对象丢到连接池中,那此对象什么时候销毁呢?我觉得应该是connection timeout设置的时间内,如果程序中没有向连接池发出请求说要connection对象,sqlconnection对象便会销毁,这也是连接池存在的意义。

七、Windows 不能在 本地计算机 启动 SQL Server 服务 错误代码126

  在使用SQL2005(或2008)是可能会遇到错误提示:

“Windows 不能在 本地计算机 启动 SQL Server 。有关更多信息,查阅系统事件日志。如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定服务错误代码126 ”

解决方法:

  在2005(2008)的“配置工具”中有个“SQL Server Configuration Manager”-->SQLserver 2005(2008) 的网络配置,

查看MSSOLSERVER和SQLEXPRESS中都有个VIA的属性,将VIA设置为禁用,然后重启服务,就可以了,服务能正常启动。

 

转载于:https://www.cnblogs.com/peterYong/p/6556545.html

你可能感兴趣的文章
NSSet和NSArray区别与方法总结
查看>>
Python列表 元组 字典 集合
查看>>
foreach遍历数组、数组的转置与方阵的迹
查看>>
Still unable to dial persistent://blog.csdn.net:80 after 3 attempts
查看>>
HTML超文本标记语言(九)——表单输入类型
查看>>
基于busybox制作mini2440根文件系统及使用nfs挂载
查看>>
信道容量及信道编码原理学习
查看>>
浅谈独立特征(independent features)、潜在特征(underlying features)提取、以及它们在网络安全中的应用...
查看>>
从随机过程的熵率和马尔科夫稳态过程引出的一些思考 - 人生逃不过一场马尔科夫稳态...
查看>>
《A First Course in Abstract Algebra with Applications》-chaper1-数论-关于素数
查看>>
ORA-3136
查看>>
算法笔记_145:拓扑排序的应用(Java)
查看>>
JS获取农历日期
查看>>
PHP中的HTTP协议
查看>>
CSS给文字描边实现发光文字
查看>>
Java WebService入门实例
查看>>
css样式之补充
查看>>
结构与联合
查看>>
关于JS历史
查看>>
软件架构师工作流程
查看>>