前言:
转载请附上连接,本帖原创请勿照抄。
本文使用C++命令行实现连接SQLServer2008来执行SQL内容。本帖有所借鉴csdn内容,但是大部分都是个人总结心得。使用命令行连接SQLServer有两种方法,一种是使用SQLCmd,另一种是使用OSQL。这两种优缺点是SQLCmd基本上所有版本都会支持,但是OSQL有些版本可能不会支持,但是这两种方法实现的功能都一样,两种字符串的写法也大相径庭。
C++ 命令行执行调用SQLServer两种方法的演示:
int main()
{
std::cout << "-------- 开始执行升级SQL --------\n";
/**
*-U 账号 -P 密码 -i sql文件位置 -d 需要连接的数据库 -s 服务器地址(可以是127.0.0.1也可以是计算机名+实例名)
*两种方法: 在这里我们演示第一种方法 第二种方法也可以使用
*/
system("sqlcmd -U 输入账号 -P 输入密码 -i DatabaseTest.sql -d TestServer -s 127.0.0.1");
//system("osql -S 127.0.0.1 -U 输入账号 -P 输入密码 -d TestServer -i DatabaseTest.sql");
std::cout << "-------- SQL完成 --------\n";
system("pause");
}
SQL文件
--文件名&&路径: D:\DatabaseTest.sql
USE [TestServer]
GO
SELECT * FROM ValuedCustomer;
GO
INSERT INTO ValuedCustomer(UserID, UserVIP, UserPlus) values(100010, '老王', 'Black Card')
GO
SELECT * FROM ValuedCustomer;
GO
运行结果:
可能出现的错误以及导致失败的问题
1.命名管道提供程序: 无法打开与 SQL Server 的连接 [2].Sqlcmd: 错误: Microsoft SQL Native Client : 建立到服务器的连接
允许远程连接这个事实可能会导致失败。Sqlcmd: 错误: Microsoft SQL Native Client : 登录超时已过期。
解决方法: SQLServer 管理器-->DMS协议-->TCP\IP-->属性
-->协议: 全部侦听-〉是 已启用-〉是
-->IP地址 IP3 地址-〉127.0.0.1 TCP动态端口-〉0 TCP端口-〉(不需要更改) 活动-〉是 已启用-〉否
-->IPAll TCP动态端口-〉随机(不需要更改) TCP端口-〉1433
--> 重启SQL服务 再次运行升级SQL服务
2.提示 找不到ODBC 13数据源 源连接无效或者失败
解决方法: 打开控制面板->管理工具->数据源->查看SQL Server的数据源是不是低于ODBC13版本
->如果低于就直接按个13版本的->如果高于13版本应该不会出现问题,如果出问题直接安装低版本就好
3.所有命令查询方式:
解决方案: 在CMD下输入 sqlcmd -? 或者osql -? 就可以看到全部命令提示信息。
也可以使用 SQLCmd -S localhost -U sa -P123456 -d TestServer -Q "SELECT * FROM ValuedCustomer UserID=1" -o "D:\Data.txt" 来进行查询
4.本文资源文件
请打开csdn下载链接下载
下载链接:https://download.csdn.net/download/qq_37529913/12438965
感谢您能点击进来观看完本篇文章,如果对您有所帮助请点点赞👍
码字不易,谢谢关注🙏