由于TempDB设置错误导致SQL Server无法重启错误的解决方案

场景:
前几天接到一个朋友的电话,说他们由于将TempDB设置错误导致SQL Server无法重启,让我帮忙看看。
他们本来是想将TempDB的文件挪动到其他路径,比如准确的脚本应该是:

USE master
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdata_01, FILENAME = 'D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA\tempdb.mdf')
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\LOG\templog.ldf')

但是他们却写成了:

USE master
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdata_01, FILENAME = 'D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA')
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA')

之后,未经检查,就直接重启了SQL Server服务,最后导致服务无法被启动。

查看数据库和Windows的错误日志,错误信息为:

CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file '
D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA'.

CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file '
D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA'.

 

解决步骤:

1.先将正确的Alter Database Tempdb的脚本放在某个路径下,比如我这里就放在D:\Temp\ModifyTemp.sql

USE master
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = tempdata_01, FILENAME = 'D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA\tempdb.mdf')
GO
ALTER DATABASE tempdb 
MODIFY FILE (NAME = templog, FILENAME = 'D:\SQL2K14_DATA\MSSQL12.MSSQLSERVER\MSSQL\DATA\templog.ldf')

2.在命令行中使用单用户模式启动SQL Server服务:

C:\Users\wh42>net start MSSQLServer /f /T3608 /m
The SQL Server (MSSQLSERVER) service is starting.
The SQL Server (MSSQLSERVER) service was started successfully.

3.在该cmd窗口中,使用sqlcmd来执行第一步中的脚本:

在cmd中先进入脚本所在的路径,之后执行该脚本:

C:\Users\wh42>d:D:\>cd TempD:\Temp>sqlcmd -iModifyTempDB.sql
Changed database context to 'master'.
The file "tempdata_01" has been modified in the system catalog. The new path wil
l be used the next time the database is started.
The file "templog" has been modified in the system catalog. The new path will beused the next time the database is started.

4.根据上面的提示,我们已经将TempDB的对应的meta信息修改完毕,此时我们只需要关闭该窗口,再使用正常模式重启SQL Server服务即可。

 

这样,我们就解决了由于设置TempDB错误,导致无法启动SQL Server服务的问题了。

 

转载于:https://www.cnblogs.com/Wison-Ho/p/4891825.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290151.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...

为什么是Python先来聊聊为什么做数据分析一定要用 Python 或 R 语言。编程语言这么多种, Java , PHP 都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用 Python 语言?数据分析只是一个需求,理论上来讲&#x…

判断一个偶数(大于4)是不是两个素数之和

问题:编制具有如下原型的函数sushu(int n),用来判断整数n是否为素数; 而后编制主函数,任意输入一个大于4的偶数d,找出满足d=d1+d2的所有数对,其中要求d1与d2均为素数(通过调用sushu函数来判断素数)。如偶数18可以分解为11+7以及13+5;而偶数80可以分解为:43+37、61+19、…

C和指针之动态内存分配堆、栈、全局区(静态区)、常量区对比总结学习笔记

一、各个区的介绍 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是…

.NET 6 使用 string.Create 提升字符串创建和拼接性能

本文告诉大家,在 dotnet 6 或更高版本的 dotnet 里,如何使用 string.Create 提升字符串创建和拼接的性能,减少拼接字符串时,需要额外申请的内存,从而减少内存回收压力本文也是跟着 Stephen Toub 大佬学性能优化系列博客…

java读取csv文件

2019独角兽企业重金招聘Python工程师标准>>> CSV其实就是COMMA SEPARATED VALUE的缩写。在开发中用Java操作csv文件有专门的的API叫javacsv.jar javacsv.jar下载地址: http://sourceforge.net/project/showfiles.php?group_id33066 package com.syc.tes…

python中plt.hist_关于python中plt.hist参数的使用详解

python matplotlib hist堆积直方图?可以帮小编实现下面两张图的代码吗与怪物战斗的人,应当小心自己不要成为怪物。当你远远凝视深渊时,深渊也在凝视你。from sklearn.datasets import load_iris import matplotlib.pyplot as plt iris load_…

两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)

本篇文章主要介绍了"两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)",主要涉及到两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)方面的内容,对于两款JSON类库Jackson与JSON-lib的性能对比(新增第三款测试)感兴趣的同学可…

子窗体菜单合并到父窗体菜单的解决办法

系统中既有父窗体又有子窗体,子窗体添加下拉菜单,运行时子窗体的菜单会合并到父窗体的菜单中,解决办法是,将子窗体菜单控件的AllowMerge属性设为false。

C和指针之预处理器之普通c/c++文件的编译过程

1、简单总结c/c++文件的编译3个过程 1)、预处理器进行预编译 比如我们测试这段代码 #include <stdio.h>int main() {printf("hwllo word\n");return 0; } 主要做的事情是: (1)将所有的#define删除,并且展开所有的宏定义。说白了就是字符替换 (2)处理所…

Android笔记:Activity

1.Android可视化界面结构: 一个Android应用的可视化界面最底层是Activity,在他之上是一个Window对象,在window之上通常是布局容器,再上面才是用户直接交互的组件(按钮,文本框)交互组件(UI控件)-->布局容器(layout)--->Window对象--->Activity2.Activity生命周期 …

ASP.NET Core使用编译时依赖关系注入(DI)

前言依赖关系注入(DI)&#xff0c;是一种在类及其依赖项之间实现控制反转(IoC)的技术。在ASP.NET Core中&#xff0c;依赖关系注入是“一等公民”&#xff0c;被大量使用。通常&#xff0c;使用接口作为依赖关系实现抽象化&#xff0c;并且在服务容器中注册依赖关系&#xff0c…

oracle 约束 Oracle 10g学习系列(5)

这篇文章来自网络&#xff0c;写的挺好&#xff0c;转过来了。维护数据的完整性概述&#xff1a;数据的完整性用于确保数据库数据遵从一定的商业和逻辑规则。在Oracle中&#xff0c;数据完整性可以使用约束、触发器、应用程序&#xff08;过程、函数&#xff09;三种方法来实现…

使其正序排序 打印一串数字_JavaScript计数排序算法

一、计数排序算法计数排序(Counting sort)是一种稳定的线性时间排序算法。该算法于1954年由 Harold H. Seward 提出。计数排序使用一个额外的数组&#xff0c;数组的下标对应待排序的数字。然后根据新数组的下标来获得正确的顺序。就像给每个位置按数字顺序做好标记&#xff0c…

shiro real的理解,密码匹配等

1 、定义实体及关系 即用户-角色之间是多对多关系&#xff0c;角色-权限之间是多对多关系&#xff1b;且用户和权限之间通过角色建立关系&#xff1b;在系统中验证时通过权限验证&#xff0c;角色只是权限集合&#xff0c;即所谓的显示角色&#xff1b;其实权限应该对应到资源&…

Visual C#使用ADO.NET自定义类MyDBase连接SQL Server数据库

本文为Visual C#使用ado.net技术跟SQL Server数据库交互的自定义类MyDBase,通过该类,可以快速高效的实现数据库的连接、获取数据集、获取数据的个数、执行SQL语句等。例如,连接数据库的方法构建为: public MyDBase(string MyDBServerName, string MyDataBaseName, string …

Android之看起来像奔溃了但是没有发现奔溃日志

1、问题 startActivity之后&#xff0c;然后finish,发现输入密码文本框密码没了&#xff0c;以为奔溃了&#xff0c;但是没有发现奔溃日志 2、思考 我想是不是因为调用蓝牙API结束后还有哪些没有写&#xff0c;往第三方API思考去了&#xff0c;然后我用pidcat.py 和adb logcat看…

ASP.NET-----Repeater数据控件的用法总结(转)

ASP.NET-----Repeater数据控件的用法总结(转) 一、Repeater控件的用法流程及实例&#xff1a; 1、首先建立一个网站&#xff0c;新建一个网页index.aspx。 2、添加或者建立APP_Data数据文件&#xff0c;然后将用到的数据库文件放到APP_Data文件夹中。 3、打开数据库企业管理器&…

Vue2.x项目整合ExceptionLess监控

前言一直以来我们都是用Sentry做项目监控&#xff0c;不过前段时间我们的Sentry坏掉了&#xff08;我搞坏的&#xff09;但监控又是很有必要的&#xff0c;在sentry修好之前&#xff0c;我想先寻找一个临时的替代方案&#xff0c;同时发现网上关于ExceptionLess的资料少得可怜&…

Jenkins修改管理员密码.

前言&#xff1a;Jenkins修改管理员密码&#xff0c;我看了网上所有的教程&#xff0c;竟然全都是拿着一串已经加密好的111111的密文去替代config.xml文件里面的密码&#xff0c;然后大家的密码都是111111&#xff01;我觉得这种做法实在太敷衍了&#xff01;于是我就研究了下&…

截取指定字符前_VBA学习笔记35-1:字符串拆分与组合

学习资源&#xff1a;《Excel VBA从入门到进阶》第35集 by兰色幻想本课的示例都在立即窗口展示运行结果&#xff0c;要在立即窗口展示的话要使用“Debug.Print”。Debug.Print 将代码执行结果显示在“立即窗口”中&#xff0c;但不影响程序执行。一、字符串截取1.left,right,mi…