MSSQL 2005数据库不能正常连接:客户端无法建立连接,因为在登录前连接初始化进程中发生错误

本文记录了在使用dotNet2.0网站并连接SQL2005数据库时遇到的问题及解决过程。主要故障为客户端无法建立连接,原因在于系统恢复后IP地址变更及TCP/IP协议未启用。

建立了一个dotNet2.0的网站,数据库是SQL2005的,系统没有还原之前网站访问正常。某日重新恢复了一下系统,再次访问时却不能正常打开。跟踪程序发现如下的错误:

 

{"客户端无法建立连接,因为在登录前连接初始化进程中发生错误。可能的原因包括: 客户端尝试连接的 SQL Server 的版本不受支持; 服务器过忙,无法接受新连接; 或者,服务器上存在资源限制(内存不足或已达到允许的连接最大数量)。 (provider: 命名管道提供程序, error: 0 - 管道的另一端上无任何进程。)"}

 

解决办法:

1、确认数据库的连接字符串是否正确(重新恢复系统后IP地址改变了,所以导致不能正常连接)

2、打开SQL Server 配置管理器,确认协议中的TCP/IP协议是否启用。

### 连接Vue应用程序至虚拟机上运行的SQL Server 为了实现从Vue应用连接到运行在虚拟机上的SQL Server数据库,通常不建议直接从端JavaScript代码访问数据库。最佳实践是通过API服务器作为中介层来处理这些请求。可以采用Node.js搭配Express框架创建RESTful API服务。 #### 创建中间件API服务器 1. **安装依赖** 首先,在项目根目录下初始化一个新的Node.js项目并安装必要的包: ```bash npm init -y npm install express mssql body-parser cors ``` 2. **编写API逻辑** 接着建立一个简单的HTTP接口用于接收来自端的数据查询请求并向SQL Server发送命令: ```javascript const express = require('express'); const sql = require('mssql'); const bodyParser = require('body-parser'); const cors = require('cors'); // 设置CORS策略允许跨域资源共享 app.use(cors()); // 配置解析JSON格式数据的能力 app.use(bodyParser.json()); // 定义SQL Server配置参数 const config = { user: 'your_username', password: 'your_password', server: 'ip_address_of_your_vm', // 虚拟机IP地址 database: 'YourDatabaseName' }; // 建立SQL Server之间的连接池 let pool; sql.connect(config).then(pool => { console.log("Connected to MSSQL successfully"); }).catch(err => { console.error('SQL connection error:', err); }); // 启动Express实例 const app = express(); // GET /api/data 返回一些测试数据给客户端 app.get('/api/data', async (req, res) => { try { const result = await pool.request().query(`SELECT * FROM YourTableName`); res.send(result.recordset); } catch (err) { console.error('Error executing query:', err); res.status(500).send({ message: "Server Error" }); } }); // 监听指定端口等待传入连接 const PORT = process.env.PORT || 3001; app.listen(PORT, () => { console.log(`Server listening at http://localhost:${PORT}`); }); ``` 此部分代码实现了基本的功能,即设置了一个监听特定路径`/api/data`的服务端点,当收到GET请求时会向SQL Server发出一条简单查询语句,并把结果返回给调用者[^1]。 #### 修改Vue组件以消费API 假设已经有一个基于Vue CLI构建的应用程序,则可以在其中添加Axios库以便轻松发起网络请求: ```bash npm install axios ``` 之后修改某个.vue文件内的方法如下所示: ```html <template> <div id="app"> <!-- 显示获取到的信息 --> {{ data }} </div> </template> <script> import axios from 'axios'; export default { name: 'App', data() { return {data: null}; }, mounted(){ this.fetchData(); }, methods:{ fetchData(){ axios({ method:'get', url:'/api/data' // 如果在同一台机器部署则不需要更改URL;否则需指明完整的远程地址 }).then(response=>{ this.data=response.data; }) } } } </script> ``` 上述操作完成后,启动两个独立进程分别执行后两端代码即可完成整个流程[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值