❶ hibernate sql怎么使用别名
项目环境:hibernate3.6.1 mysql5.7.3 驱动:mysql-connector-java-5.1.26
问题描述:项目是从一个sqlserver 数据库翻转到mysql数据库上的。通过sql查询,自动映射到对象上,但是总是报错。奇怪的问题:sql打印出来放到数据库客户端上
可以正常执行结果。但是sql就是查询不出来,报 Column 'account' not found. 这样的错。换过驱动,想过框架的调用方式,查询资料的时候,发现有人
说用query.addEntity("","").list() 可以解决问题,未做验证。因为不想花大力气从框架上变动。用驱动源码跟踪,发现原来,驱动根本就不识别别名。在查询
`userAccount`对应的值的时候,传到驱动的columnName 竟然是 “account”,这也是很多人在网上说的,如果sqlQuey 遇到两个表有同一个属性名,查询会
报错的bug的原因所在!
代码部分:
[java] view plain
SQLQuery query = createSQLQuery(orderSql, values);
long totalCount = countSqlResult(sql, values);
page.setTotalItems(totalCount);
setPageParameterToSqlQuery(query, page);
List result = query.setResultTransformer(Transformers.aliasToBean(cl)).list();
page.setResult(result);
平台输出:
[sql] view plain
select
l.id,
userId,
u.account as `userAccount`,
ip,
ipAddr,
loginTime
from
t_loginlog l
left join
t_user u
on l.userId = u.id
where
1=1 limit ?
[java] view plain
[2015-01-30 14:27:29,031][ERROR][http-8080-1] (JDBCExceptionReporter.java:234) - Column 'account' not found.
2015-1-30 14:27:29 org.apache.catalina.core.StandardWrapperValve invoke
严重: Servlet.service() for servlet ishare threw exception
java.sql.SQLException: Column 'account' not found.
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
at com.mysql.jdbc.ResultSetImpl.findColumn(ResultSetImpl.java:1171)
at com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5737)
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)
at org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:263)
at org.hibernate.type.descriptor.sql.VarcharTypeDescriptor$2.doExtract(VarcharTypeDescriptor.java:61)
at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:64)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:249)
at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:234)
at org.hibernate.loader.custom.CustomLoader$ScalarResultColumnProcessor.extract(CustomLoader.java:505)
at org.hibernate.loader.custom.CustomLoader$ResultRowProcessor.buildResultRow(CustomLoader.java:451)
at org.hibernate.loader.custom.CustomLoader.getResultColumnOrRow(CustomLoader.java:348)
at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:639)
at org.hibernate.loader.Loader.doQuery(Loader.java:829)
at org.hibernate.loader.Loader.(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2533)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
at org.hibernate.loader.Loader.list(Loader.java:2271)
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:316)
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1842)
at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:165)
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:157)
at com.coolsoul.framework.orm.hibernate.HibernateDao.findSqlPage(HibernateDao.java:90)
at com.coolsoul.ishare.loginLog.service.LoginLogService.findPageList(LoginLogService.java:54)
at com.coolsoul.ishare.loginLog.service.LoginLogService
FastClassByCGLIB
fb9ca761.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:688)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:621)
at com.coolsoul.ishare.loginLog.service.LoginLogService
EnhancerByCGLIB
5ea6d36b.findPageList(<generated>)
at com.coolsoul.ishare.loginLog.controller.LoginLogController.queryList(LoginLogController.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176)
at org.springframework.web.servlet.mvc.annotation..invokeHandlerMethod(.java:426)
at org.springframework.web.servlet.mvc.annotation..handle(.java:414)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:662)
解救方法:
困扰了我很久 ,找了很多资料,问题很简单,就是驱动不支持别名的问题,这里记录下,为后来人造桥!!! 在连接mysql数据库的时候添加 useOldAliasMetadataBehavior=true 这个参数!!!!
❷ SQL Server是什么意思
SQL Server是Microsoft 公司推出的关系型数据库管理系统。
SQL Server具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。
Microsoft SQL Server数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。
(2)sqlserver数据库别名扩展阅读:
在Windows NT 推出后,Microsoft与Sybase 在SQL Server 的开发上就分道扬镳了,Microsoft 将SQL Server移植到Windows NT系统上,专注于开发推广SQL Server 的Windows NT 版本。
SQL Server 2000 是Microsoft 公司推出的SQL Server数据库管理系统,该版本继承了SQL Server 7.0 版本的优点,同时又比它增加了许多更先进的功能。
具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2000 的大型多处理器的服务器等多种平台使用。
❸ sqlserver这个修改数据库名称语句
执行系统存储过程 SP_renamedb 修改数据库名称。
改名之前,必须将该数据库切换到单用户模式,更名之后再恢复为多用户模式。
分三步:
EXEC sp_dboption 'jxgl', 'SINGLE USER', True
EXEC sp_renamedb 'jxgl', '教学管理'
EXEC sp_dboption '教学管理', 'SINGLE USER', False
❹ 如何连接SQLSERVER 2000数据库
远程连接sql server 2000服务器的解决方案
一、 看ping 服务器IP能否ping通。
这个实际上是看和远程sql server 2000服务器的物理连接是否存在。如果不行,请检查网络,查看配置,当然得确保远程sql server 2000服务器的IP拼写正确。
二 、在Dos或命令行下输入telnet 服务器IP 端口,看能否连通。
如telnet 202.114.100.100 1433
通常端口值是1433,因为1433是sql server 2000的对于Tcp/IP的默认侦听端口。如果有问题,通常这一步会出问题。通常的提示是“……无法打开连接,连接失败"。
如果这一步有问题,应该检查以下选项。
1. 检查远程服务器是否启动了sql server 2000服务。如果没有,则启动。
2. 检查服务器端有没启用Tcp/IP协议,因为远程连接(通过因特网)需要靠这个协议。检查方法是,在服务器上打开 开始菜单->程序->Microsoft SQL Server->服务器网络实用工具,看启用的协议里是否有tcp/ip协议,如果没有,则启用它。
3. 检查服务器的tcp/ip端口是否配置为1433端口。仍然在服务器网络实用工具里查看启用协议里面的tcp/ip的属性,确保默认端口为1433,并且隐藏服务器复选框没有勾上。
事实上,如果默认端口被修改,也是可以的,但是在客户端做telnet测试时,写服务器端口号时必须与服务器配置的端口号保持一致。如果隐藏服务器复选框被勾选,则意味着客户端无法通过枚举服务器来看到这台服务器,起到了保护的作用,但不影响连接,但是Tcp/ip协议的默认端口将被隐式修改为2433,在客户端连接时必须作相应的改变。
4. 如果服务器端操作系统打过sp2补丁,则要对windows防火墙作一定的配置,要对它开放1433端口,通常在测试时可以直接关掉windows防火墙(其他的防火墙也关掉最好)。
5. 检查服务器是否在1433端口侦听。如果服务器没有在tcp连接的1433端口侦听,则是连接不上的。检查方法是在服务器的dos或命令行下面输入
netstat -a -n 或者是netstat -an,在结果列表里看是否有类似 tcp 127.0.0.1 1433 listening 的项。如果没有,则通常需要给sql server 2000打上至少sp3的补丁。其实在服务器端启动查询分析器,输入 select @@version 执行后可以看到版本号,版本号在8.0.2039以下的都需要打补丁。
如果以上都没问题,这时再做telnet 服务器ip 1433 测试,将会看到屏幕一闪之后光标在左上角不停闪动。恭喜,马上可以开始在企业管理器或查询分析器连接了。
三、 检查客户端设置
程序->Microsoft SQL Server -> 客户端网络使用工具。像在服务器网络实用工具里一样,确保客户端tcp/ip协议启用,并且默认端口为1433(或其他端口,与服务器端保持一致就行)。
四、 在企业管理器里或查询那分析器连接测试
企业管理器->右键SQlserver组->新建sqlserver注册->下一步->写入远程IP->下一步->选Sqlserver登陆->下一步->写入登陆名与密码(sa,password)->下一步->下一步->完成
查询分析器->文件->连接->写入远程IP->写入登录名和密码(sa,password)->确定
通常建议在查询分析器里做,因为默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是4秒,而查询分析器是15秒。
修改默认连接超时的方法:
企业管理器->工具->选项->在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡->连接设置->在 登录超时(秒) 后面的框里输入一个较大的数字
查询分析器->工具->选项->连接->在 登录超时(秒) 后面的框里输入一个较大的数字
通常就可以连通了,如果提示错误,则进入下一步。
五、 错误产生的原因通常是由于SQL Server使用了"仅 Windows"的身份验证方式,因此用户无法使用SQL Server的登录帐户(如 sa )进行连接。解决方法如下所示:
1. 在服务器端使用企业管理器,并且选择"使用 Windows 身份验证"连接上 SQL Server。
2. 展开"SQL Server组",鼠标右键点击SQL Server服务器的名称,选择"属性",再选择"安全性"选项卡。
3. 在"身份验证"下,选择"SQL Server和 Windows "。
4. 重新启动SQL Server服务。(在dos或命令行下面net stop mssqlserver停止服务,net start mssqlserver启动服务,也是一种快捷的方法)。
附注:在连接本地服务器时,通常使用的是命名管道协议(在服务器网络实用工具里可以看到启用的协议有这个),默认端口是445,因此在本地能连通是不能说明什么问题的,连接远程服务器是完全不同的协议)
❺ 用delphi7和ms sql server2005开发数据库程序时碰到的问题
老兄!操作M$的数据库还用BDE?比较佩服的说!
强烈要求你改用ADO!无论从效率、安全性和最后产品的分发上来讲,操作
SQL
Server
的话,ADO都强过
BDE
很多倍!
❻ Access数据库与SQL Sever 数据库区别很大吗
Access数据库与SQL Sever 数据库区别:
1、Access是关联式数据库管理系统;SQL Server是一个关系数据库管理系统
2、Access数据库数据储存量小,安全性不够高,对高强度操作适应性比较差;SQL Server安全性高,真正的客户机/服务器体系结构,图形化用户界面,使系统管理和数据库管理更加直观、简单,丰富的编程接口工具为用户进行程序设计提供了更大的选择余地。
3、Access数据库是桌面数据库系统,而且它可以开发基于自己的桌面数据库应用(UI),也可以作为前端开发工具与其它数据库搭配开发应用程序(如SQL Server,DB2,Oracle等);SQL Server数据库关系数据库的管理系统,它是一个全面的数据库平台。
4、Access数据库部署简单方便;SQL Server数据库操作数据比Access较为复杂。
(6)sqlserver数据库别名扩展阅读:
ACCESS数据库特性:使用唯一的别名,传递空指针给动态库,动态库调用无符号整数,SHIFT和F2键调用过程。
SQLserver数据库特性:
(1)高性能设计,可充分利用WindowsNT的优势。
(2)系统管理先进,支持Windows图形化管理工具,支持本地和远程的系统管理和配置。
(3)强壮的事务处理功能,采用各种方法保证数据的完整性。
(4)支持对称多处理器结构、存储过程、ODBC,并具有自主的SQL语言。
网络——SQLserver数据库
❼ sql server服务,谁能详细介绍一下
SQL Server FullText Search (MSSQLSERVER):全文检索服务
如果有全文索引的话要启动SQL Server FullText Search 没有的话启动不启动没有影响的
SQL Server Agent 是一个任务规划器和警报管理器,在实际应用和环境下,您可以将那些周期性的活动定义成一个任务,而让其在SQL Server Agent 的帮助下自动运行;假如您是一名系统管理员,则可以利用SQL Server Agent 向您通知一些警告信息,来定位出现的问题从而提高管理效率。SQL Server Agent 主要包括以下几个组件:作业;警报;操作。
主要执行以下步骤在SQL Server Enterprise Manager 中配置SQL Server Agent:
(1) 启动SQL Server Enterprise Manager, 登录到指定的服务器打开Management 文件夹,启动SQL Server Agent。
(2) 右击SQL Server Agent 图标,在弹出菜单中选择Properties 选项。打开SQL Server Agent Properties 对话框,选中General 标签页。如图17-1 所示。其中各选项的含义为:
System account: 定义SQL Server Agent 运行于哪个系统账号下,该系统账号是sysadmin 角色的成员;
This account: 定义SQL Server Agent 运行于哪一个NT 账号下,该账号必须是运行SQL Server Agent 服务器上的sysadmin 角色,选择此选项,必须在Password处提供密码。常在下列情况中选中该选项:
把事件转寄到其它NT 计算机的应用日志;
如何来创建一个作业,该作业要使用多个计算机上的资源;
通过电子邮件或寻呼通知操作员消息。
Mail Profile 有效的邮件配置文件名,该文件保存通过SQL Mail 为SQL ServerAgent 运行账号配置的邮件系统正常工作的配置信息;
Save copies of the sent messages in the Sent Items folder: 指定发送消息存放的文件目录;
File name: 指定SQL Server Agent 日志文件名,缺省名为C:\Mssql7\Log\Sqlagent.out;
Error message pop-up recipient 指定接收网络弹出错误消息的接收者名字,这些错误消息由SQL Server Agent 写入它的错误日志。
(3) 选中Advanced 标签页
Auto restart SQL Server if it stops unexpectedly :表示如果SQL Server 意外停止运行,则将自动重新启动;
Auto restart SQL Server Agent if it stops unexpectedly: 表示如果SQL Server Agent意外停止运行,则将自动重新启动;
Forward events to a different server: 表示将事件转寄给其它服务器。在Server 旁的下拉列表中选择接收服务器;
Unhandled events: 表示转寄那些不是在本地服务器上处理的事件;All 表示所有事件;
If error has severity of or above: 表示只有在错误等级大于或等于给定值时,才将事件转寄给所选服务器;
Idle CPU(s) Condition: 定义了CPU 空闭状态的属性值,即CPU 平均使用率低于给不定期值且该状态持续的时间超过给定时间,则认为CPU 处于空闭状态。
4) 选中Alert System 标签页
Address formatting for page e-mails: 该区域用来设定消息属性并在寻呼信息中加入错误信息;
Fail-safe operator: 表示失败安全型操作员,如果由于不确定的原因使消息无法到达指定的操作员,则SQL Server Agent 会把该消息传给失败安全型操作员;
(5) 选中Job System 标签页
Job history log: 该区域指定日志的大小以及每件作业的最大行数,从而避免填满msdb 数据库;
Job execution: 该区域用来设定在作业执行结束前SQL Server Agent 的最长等待时间,如果超过这一时间作业仍没有执行,则SQL Server Agent 将关闭;
Non-SysAdmin job step proxy account: 该区域用来设定执行CmdExec 和ActiveScripting
作业的限制。
(6) 选中Connection 标签页
SQLServer Connection: 该区域定义了将SQL Server Agent 连接到SQL Server 时使用的认证模式;
SQLServer alias 定义:本地SQL Server 服务器的别名。
注意:配置完SQL Server Agent之后需要重新启动,这样配置才能生效
SQL Server 浏览器程序以 Windows 服务的形式运行。SQL Server 浏览器侦听对 MicrosoftSQL Server 资源的传入请求,并提供计算机上安装的 SQL Server 实例的相关信息。SQL Server 浏览器可用于执行下列操作:
浏览可用服务器列表
连接到正确的服务器实例
连接到专用管理员连接 (DAC) 端点
SQL Server Browser 服务 (sqlbrowser) 为数据库引擎和 SSAS 的每个实例提供实例名称和版本号。SQL Server 浏览器随 SQL Server 一起安装,为该计算机上运行的早期版本的 SQL Server(从 SQL Server 7.0 开始)提供此服务。
SQL Server 浏览器可以在安装过程中进行配置,也可以使用 SQL Server 配置管理器进行配置。默认情况下,SQL Server Browser 服务会自动启动:
MicrosoftIntegration Services 是用于生成企业级数据集成和数据转换解决方案的平台。使用 Integration Services 可解决复杂的业务问题,具体表现为:复制或下载文件,发送电子邮件以响应事件,更新数据仓库,清除和挖掘数据以及管理 SQL Server 对象和数据。这些包可以独立使用,也可以与其他包一起使用以满足复杂的业务需求。Integration Services 可以提取和转换来自多种源(如 XML 数据文件、平面文件和关系数据源)的数据,然后将这些数据加载到一个或多个目标。
Integration Services 包含一组丰富的内置任务和转换、用于构造包的工具以及用于运行和管理包的 Integration Services 服务。可以使用 Integration Services 图形工具来创建解决方案,而无需编写一行代码;也可以对各种 Integration Services 对象模型进行编程,通过编程方式创建包并编写自定义任务以及其他包对象的代码。
❽ sql server 夸数据库查询问题
你先去你要使用的机器上用客户端工具里建立好这个服务器的连接,用个别名代表它,比如DB1,端口配置成1049,ip172.16.121.1.然后用这个命令
EXEC sp_addlinkedserver
@server='DB1',--被访问的服务器别名
@srvproct='', --sqlserver不需要指定
@provider='SQLOLEDB',
@datasrc='DB1' --要访问的服务器
EXEC sp_addlinkedsrvlogin
'DB1', --被访问的服务器别名
'false',
NULL,
'dba', --帐号 需要用121.1的登录密码
'password' --密码
然后select * from [DB1].DB_NAME.DBO.TABLE
这就可以查询到121.1这台服务器上的数据了。
❾ SQLServer如何完整的修改一个数据库的名称
',15,1)
RETURN
--DROP
DATABASE
DB_BEIJING
END
GO
USE
master
GO
--创建测试数库
CREATE
DATABASE
[DB_BEIJING]
ON
PRIMARY
(
NAME
=
N'DB_BEIJING',
FILENAME
=
N'X:\DATA\DB_BEIJING.mdf'
,
SIZE
=
3072KB
,
FILEGROWTH
=
1024KB
)
LOG
ON
(
NAME
=
N'DB_BEIJING_log',
FILENAME
=
N'W:\Log\DB_BEIJING_log.ldf'
,
SIZE
=
1024KB
,
FILEGROWTH
=
1024KB
)
GO
--以下为修改过程
--step
1
:
修改数据库名称
USE
master
GO
ALTER
DATABASE
DB_BEIJING
SET
SINGLE_USER
WITH
ROLLBACK
IMMEDIATE
GO
EXEC
master..sp_renamedb
'DB_BEIJING','DB_SHANGHAI'
GO
ALTER
DATABASE
DB_SHANGHAI
SET
MULTI_USER
GO
--step
2
:
查看修改名称后的数据库逻辑名及物理文件名
USE
master
GO
SELECT
name
AS
[Logical
Name],
physical_name
AS
[DB
File
Path],type_desc
AS
[File
Type],
state_desc
AS
[State]
FROM
sys.master_files
WHERE
database_id
=
DB_ID(N'DB_SHANGHAI')
GO
/*
Logical
Name
DB
File
Path
File
Type
State
DB_BEIJING
X:\DATA\DB_BEIJING.mdf
ROWS
ONLINE
DB_BEIJING_log
W:\Log\DB_BEIJING_log.ldf
LOG
ONLINE
*/
--step
3
:
修改数据库逻辑文件名称
USE
master
GO
ALTER
DATABASE
DB_SHANGHAI
SET
SINGLE_USER
WITH
ROLLBACK
IMMEDIATE
GO
ALTER
DATABASE
DB_SHANGHAI
MODIFY
FILE
(NAME=N'DB_BEIJING',
NEWNAME=N'DB_SHANGHAI')
GO
ALTER
DATABASE
DB_SHANGHAI
MODIFY
FILE
(NAME=N'DB_BEIJING_log',
NEWNAME=N'DB_SHANGHAI_log')
GO
ALTER
DATABASE
DB_SHANGHAI
SET
MULTI_USER
GO
--step
4
:
修改数据库物理文件名称之前先打开xp_cmdshell支持
USE
master
GO
sp_configure
'show
advanced
options',1
GO
RECONFIGURE
WITH
OVERRIDE
GO
sp_configure
'xp_cmdshell',
1
GO
RECONFIGURE
WITH
OVERRIDE
GO
--step
5
:
重命名数据库物理文件名称
USE
[master]
GO
ALTER
DATABASE
DB_SHANGHAI
SET
OFFLINE
WITH
ROLLBACK
IMMEDIATE
GO
EXEC
xp_cmdshell
'RENAME
"X:\DATA\DB_BEIJING.mdf",
"DB_SHANGHAI.mdf"'
GO
EXEC
xp_cmdshell
'RENAME
"W:\Log\DB_BEIJING_log.ldf",
"DB_SHANGHAI_log.ldf"'
GO
--step
6
:
将数据库逻辑名称指向新的物理文件,并将数据库online
USE
[master]
GO
ALTER
DATABASE
DB_SHANGHAI
MODIFY
FILE
(NAME
=DB_SHANGHAI,
FILENAME
=
'X:\DATA\DB_SHANGHAI.mdf')
GO
ALTER
DATABASE
DB_SHANGHAI
MODIFY
FILE
(NAME
=DB_SHANGHAI_log,
FILENAME
=
'W:\LOG\DB_SHANGHAI_log.ldf')
GO
ALTER
DATABASE
DB_SHANGHAI
SET
ONLINE
--step
7
:
查看全部修改完成后的数据库情况
USE
master
GO
SELECT
name
AS
[Logical
Name],
physical_name
AS
[DB
File
Path],type_desc
AS
[File
Type],
state_desc
AS
[State]
FROM
sys.master_files
WHERE
database_id
=
DB_ID(N'DB_SHANGHAI')
GO
/*
Logical
Name
DB
File
Path
File
Type
State
DB_SHANGHAI
X:\DATA\DB_SHANGHAI.mdf
ROWS
ONLINE
DB_SHANGHAI_log
W:\LOG\DB_SHANGHAI_log.ldf
LOG
ONLINE
*/
--step
8
:
关闭xp_cmdshell支持
USE
master
GO
sp_configure
'xp_cmdshell',
0
GO
RECONFIGURE
WITH
OVERRIDE
GO
sp_configure
'show
advanced
options',0
GO
RECONFIGURE
WITH
OVERRIDE
GO
❿ 提供的数据库别名netdb和时间截记录表
您好,关于 AspNetDB.mdf由于没有aspnetdb.mdf数据库,因此得先建立一个,这个可以通过aspnet_regsql.exe完成,该程序位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\下。
1、运行它之后会弹出的窗口:按"Next >"按钮。
2、我们会发现除了有配置数据库外,还有删除数据库的功能,以后说不定可以派上用场,现在自然选Configure SQL Server for application services,按"Next >"按钮。
3、现在进入数据库选择界面,如果SQLSERVER就安装在本地的话,可以不用改任何东西,直接按"Next >"。这里的Database显示为,表示默认数据库名为aspnetdb,你也可以根据自己的需要更改名称。