sql server及数据库处理问题四个

一、sql server在还原数据库时出现: 无法执行 BACKUP LOG,因为当前没有数据库备份

1、错误描述

System.Data.SqlClient.SqlError: 无法执行 BACKUP LOG,因为当前没有数据库备份。 (Microsoft.SqlServer.SmoExtended)

2、错误原因

在还原数据库时选择了结尾日志备份,没有找到BACKUP LOG文件,所以会出现报错的情况。

3、解决办法

还原数据库时,不要勾选还原前进行结尾日志备份。

sql server及数据库处理问题四个插图

 

二、SQL Server 2022 导入大数据(10G以上)的方法

偶然机会,获得一个18G的SQL文件,想要导入数据库建立查询平台。

方法如下:

一、查看格式

使用打开超大文本文件的powershell命令行。

get-content .bigdata.sql | out-gridview

确认为此SQL文件为MSSQL的备份文件,内有建表、插入数据等命令行,由于文件太大,虽然是纯文本文档,但达到惊人的18G。使用了Notepad 打开非常困难,由于电脑内存不够“望洋兴叹”。

sql server及数据库处理问题四个插图1

二、常规导入

安装SQL Server 2022(64bit)服务端,设置保存文件夹在D盘,并安装SQL Server Management Studio(SSMS)管理工具。

登录管理工具,建立数据库bigdata,新建查询,打开此SQL文件无法加载。

在cmd命令提示符下,使用以下命令导入:

sqlcmd -S . -U sa -P password -d BigData -i E:数据原文件bigdata.sql

发现运行几分钟后会出错卡死。使用Navicat导入,情况一样。

三、切割文本

由于文件为文本,于是寻找方法将文件进行按行切割。

找了几个工具非常不称手,后来找到EmEditor成功解决。

使用EmEditor打开bigdata.sql,几分钟后成功加载。加载完成后,打开“工具”——“分割文件”,按指定行数1000000行,一直下一步,直到开始分割。

经过分割,在bigdata_split_1文件夹内成功生成68个bigdata_1.sql——至bigdata_68.sql的文件。

打开bigdata_1.sql文件,将建表SQL代码剪切出来,放到SQL查询里完成建表操作。

四、批处理

建立bigdata.cmd批处理文件在切割好的文件夹内。

按照以下格式输入命令:

sqlcmd -S . -U sa -P password -d BigData -i E:数据原文件bigdata_split_1bigdata_1.sql

sqlcmd -S . -U sa -P password -d BigData -i E:数据原文件bigdata_split_1bigdata_2.sql

……

sqlcmd -S . -U sa -P password -d BigData -i E:数据原文件bigdata_split_1bigdata_68.sql

 

然后保存。

五、大功告成

在CMD命令提示符下,运行:

bigdata.cmd

运行结束,大功告成。

 

三、使用sqlcmd命令行执行.sql文件

用微软自带的sqlcmd命令行工具,可以执行导入。以SQL Server 2016版本为例:

第一步:Win R 键入:cmd 命令,开启命令行工具;

 

第二步:键入:sqlcmd -S . -U sa -P sa -d database -i d:data.sql

 

参数说明:-S 服务器地址 -U 用户名 -P 密码  -d 数据库名称 -i 脚本文件路径 

 

需要注意的是:所有地方都直接输入就行,不用加引号,以空格为分界点

 

举例:

        sqlcmd -S 192.168.1.111 -U sa -P 123456 -d outlela -i G:safrestall.sql

分析:

        服务器为“192.168.9.111”,用户名为“sa”,密码为“123456”,数据库为“outlela”,要执行的文件路径为“G:safrestall.sql

总结:

        此方法可以执行GB级的数据库文件,在从高版本数据库导入数据到低版本时可以这样操作,但是执行速度很慢,实测1gb文件要执行近40分钟(数据库为2008R2),而且看不到进度,只能放在那儿不管。。。。。

 

::echo off ::
@echo off
SET dbhost=120.203.30.149
SET dbuser=2group
SET dbpasswd=2group
set dbName=hdj_rsxt_1029_ce

echo 开始执行数据库脚本...
for %%i in (all_sql*.sql) do (
    echo 正在执行 %%i 请稍后...

    sqlcmd -S %dbhost% -U %dbuser% -P %dbpasswd% -d %dbName% -i %%i

)

echo 所有脚本执行完毕。
pause

sql server及数据库处理问题四个插图2

四、sqlyog导入Excel表数据,出现找不到Microsoft office64驱动

 

当我们使用mysql导入外部数据时(如Excel表),有时会出现如下的错误问题,即找不到64位access驱动。为了解决这个问题,我们需要下载相应的驱动,通过下图中的点击此链接即可进入下载页面(https://www.microsoft.com/en-us/download/details.aspx?id=13255)。

sql server及数据库处理问题四个插图3

sql server及数据库处理问题四个插图4

点击下载,下载64位Access。运行下载好的文件,安装驱动即可。如果出现“装64为office Access驱动的时候,无法安装64位版本的Office,因为在您的PC上找到了以下32位程序”的问题,可以通过以下方式进行解决。

1)首先把AccessDatabaseEngine_X64.exe解压缩,里面会有一个AceRedist.msi安装文件;

2)然后用Orca打开;Orca下载可以通过网上进行,也可以在我的博客的下载里直接获取;

3)接下来右键下图的这一行,将其删除保存即可;

4)最后运行AceRedist.msi,逐步完成安装即可。

sql server及数据库处理问题四个插图5

编辑后的AceRedist.msi安装包:

链接:https://pan.baidu.com/s/148gNupUr7RfUPC_3bWrn8g

提取码:fx3h

THE END