SQL Server 创建数据库和用户 及 数据库备份常见错误

本文介绍了如何在个人博客上创建、管理SQLServer数据库,包括创建数据库、用户、修改字符集、备份与恢复过程,以及在Linux环境下处理权限问题和Windows备份恢复时遇到的文件不存在问题的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小菜鸟的个人博客已经正式上线且对外开放啦…

博客访问地址小菜鸟的大梦想

欢迎扫码关注 ↓↓↓ 更多优质内容将 首发 公众号


数据库基本使用命令

-- 创建数据库,指定编码格式
CREATE DATABASE suggest_cm COLLATE Chinese_PRC_CI_AS;

use suggest_cm;
-- 创建数据库登录用户
CREATE LOGIN suggest_cm WITH PASSWORD = 'SuggestXXX';
CREATE USER suggest_cm FOR LOGIN suggest_cm;
-- 数据库所有权,【切换到对应数据库执行】,否则当前用户无法访问数据库
ALTER ROLE db_owner ADD MEMBER suggest_cm;
----------------------------------------------------------
--### 修改字符集报错
--1. 先改为单用户模式
ALTER DATABASE suggest_cm SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
--2. 然后关闭所有的查询窗口,修改Options的Collocation属性为 Chinese_PRC_CI_AS
ALTER DATABASE suggest_cm COLLATE Chinese_PRC_CI_AS;
--3. 再修改为多用户模式
ALTER DATABASE suggest_cm SET MULTI_USER;
--4. 验证数据库的默认编码
SELECT DATABASEPROPERTYEX('suggest_cm', 'Collation');
---------------------------------------------------------
-- 删除数据库
USE [master]--注意不能够USE [TestDB],因为[TestDB]即将被删除,所以不能够将当前连接设置为连接到[TestDB],否则下面的DROP DATABASE语句会报错
GO
ALTER DATABASE [suggest_cm] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;--首先将数据库改为单用户模式,WITH ROLLBACK IMMEDIATE提示切断所有其它连接到[TestDB]的数据库连接
GO
DROP DATABASE [suggest_cm];--删除[TestDB]及其数据库文件
GO
----------------------------------------------------------
-- 数据库备份 【sqlcmd命令行】
sqlcmd -S localhost -U suggest_cm
BACKUP DATABASE suggest_cm TO DISK='/var/opt/mssql/backup/suggest_cm_custom.bak' WITH INIT
GO
-- 数据库恢复
sqlcmd -S localhost -U sa
RESTORE DATABASE suggest_cm FROM DISK='/var/opt/mssql/backup/suggest_cm_custom.bak' WITH REPLACE
GO

-- 如果上述报错,方式二
RESTORE DATABASE suggest_cm FROM DISK = '/home/hadoop/backup/source/suggest_cm_backup_2024_03_05_000000_7628671.bak'
WITH MOVE 'suggest_cm' TO '/var/opt/mssql/data/suggest_cm.mdf', MOVE 'suggest_cm_log' TO '/var/opt/mssql/data/suggest_cm_log.ldf'
GO

常见问题解决

Linux中备份mssql数据库,出现权限错误的解决方法

在Linux中安装了mssql的数据库并存了一些数据,使用sqlcmd备份的时候

backup database xxxx TO DISK='/root/xxx/db.bak'

发现总是报错没有权限,

Msg 3201, Level 16, State 1, Server test-srv, Line 7
Cannot open backup device '/root/xxxx/db_20210304.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Server test-srv, Line 7
BACKUP DATABASE is terminating abnormally.

可是我已经是root用户了,怎么会还报告没有权限了,后来想起来也许在sqlcmd中的执行用户并非root,查了下passwd文件,果然有一个mssql的用户,它的home目录是/var/opt/mssql,尝试修改备份命令

backup database xxxx TO DISK='/var/opt/mssql/db.bak'

成功

Processed 480 pages for database 'xxxx', file 'xxxx' on file 1.
Processed 2 pages for database 'xxxx', file 'xxxx' on file 1.
BACKUP DATABASE successfully processed 482 pages in 0.110 seconds (34.197 MB/sec).

Linux中恢复windows备份的mssql数据库文件,出现文件不存在的解决方法

报错如下:

image.png

解决方法:
image.png

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值