sqlserver数据库

删除sqlserver日志

大兔子大兔子 提交于 2020-02-28 10:38:16
1: 删除LOG 1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库 2:删除LOG文件 3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库 此法生成新的LOG,大小只有520多K 再将此数据库设置自动收缩 或用代码: 下面的示例分离 77169database,然后将 77169database 中的一个文件附加到当前服务器。 EXEC sp_detach_db @dbname = '77169database' EXEC sp_attach_single_file_db @dbname = '77169database', @physname = 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\77169database.mdf' 2:清空日志 DUMP TRANSACTION 库名 WITH NO_LOG 再: 企业管理器--右键你要压缩的数据库--所有任务--收缩数据库--收缩文件--选择日志文件--在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了 3: 如果想以后不让它增长 企业管理器->服务器->数据库->属性->事务日志->将文件增长限制为2M 自动收缩日志,也可以用下面这条语句 ALTER DATABASE 数据库名 SET AUTO

SQLServer 2008R2主从部署实战

筅森魡賤 提交于 2020-02-26 03:32:30
说明: 由于临时接到做OA的主从环境,基于Windows 200R2 SQLServer2008 R2,由于搜索的资料都不完整,好多重要之处有遗漏,亲自动手做了好几次,填完了坑,整理以备忘记与分享,如有错误遗漏之处欢迎指正交流~ 一、配置环境 主库: 10.8.11.214 数据库版本:SQL Server2008 R2 服务器名称:WIN-D4GRPQKED93 从库: 10.8.11.79 数据库版本: QL Server2008 R2 服务器名称:WIN-3ME2DJ8L9KT 注意点: 服务器名称(主机名)最好在确定好后再安装SQL Server 2008R2数据库这样能确保主机名,实例名保持一致 如果是在安装好sqlserver2008后修改了主机名,通常会导致主机名和实例名不一致问题; 可通过下面的命令进行检测和修复 查看服务名称(默认安装时的实例名也是和主机名一致)和主机名是否一致 select @@servername select serverproperty('servername') 如果不一致请进行修改: if serverproperty('servername') <> @@servername     begin     declare @server sysname     set @server = @@servername     exec sp

SQLServer数据事务日志操作

邮差的信 提交于 2020-02-21 01:31:37
日志备份 (log backup) 包括以前日志备份中未备份的所有日志记录的事务日志备份。 (完整恢复模式) 使用SSMS数据库管理工具备份事务日志 1、连接数据库,选择数据库-》右键点击-》选择任务-》选择备份。 2、在备份数据库弹出框中-》备份类型选择事务日志备份-》删除系统自动生成的文件名-》点击添加。 3、在选择备份目标弹出框中选择备份路径。 4、在定位数据库文件弹出框中-》选择备份文件路径-》输入文件名(注意添加后缀名)-》点击确定。 5、弹出框都点击确定。 6、示例结果: 使用SSMS数据库管理工具还原事务日志 数据库事务日志还原分为两步,第一步为还原数据库,第二步为还原数据库事务日志 第一步还原数据库 1、连接数据库,选择要还原的数据库-》右键点击-》选择任务-》选择还原-》选择数据库。 2、在还原数据库弹出框中-》选择设备-》选择要还原的文件的路径。 3、在选择备份设备弹出框中-》点击添加。 4、在定位备份文件弹出框中-》选择文件所在文件夹-》选择要还原的文件。 5、在还原数据库弹出框中-》点击选项选择恢复模式。 6、在还原数据库弹出框中-》如果要还原的数据库已存在,选择覆盖现有数据库,如果不存在,不必选择-》选择数据库恢复模式为RESTORE WITH NORECOVERY。 7、点击确定。 8、此时数据库状态为正在还原。 第二步还原事务日志文件 1

SQL Server跨库查询

荒凉一梦 提交于 2020-02-14 00:16:26
方式一:   语句   SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field    "DBO"可以省略 如   SELECT * FROM 数据库A..表A a, 数据库B..表B b WHERE a.field=b.field 方式二(在一个数据库挂上另一个数据库的外链):   SqlServer数据库:   --这句是映射一个远程数据库   EXEC sp_addlinkedserver '远程数据库的IP或主机名',N'SQL Server'   --这句是登录远程数据库   EXEC sp_addlinkedsrvlogin '远程数据库的IP或主机名', 'false', NULL, '登录名', '密码'   --登录后,可以用以下格式操作远程数据库中的对象   select * from [远程数据库的IP或主机名].[数据库名].[dbo].[表名]   insert into openrowset('sqloledb','192.168.0.100';'sa';'10060','select * from knss2009.dbo.yw_kck') select * from yw_kck   示例:     --创建链接服务器     exec sp_addlinkedserver

SQL Server跨库查询

不想你离开。 提交于 2020-02-13 14:19:37
方式一: 语句 SELECT * FROM 数据库A.dbo.表A a, 数据库B.dbo.表B b WHERE a.field=b.field "DBO"可以省略 如 SELECT * FROM 数据库A..表A a, 数据库B..表B b WHERE a.field=b.field 方式二(在一个数据库挂上另一个数据库的外链): SqlServer数据库: --这句是映射一个远程数据库 EXEC sp_addlinkedserver '远程数据库的IP或主机名',N'SQL Server' --这句是登录远程数据库 EXEC sp_addlinkedsrvlogin '远程数据库的IP或主机名', 'false', NULL, '登录名', '密码' --登录后,可以用以下格式操作远程数据库中的对象 select * from [远程数据库的IP或主机名].[数据库名].[dbo].[表名] insert into openrowset('sqloledb','192.168.0.100';'sa';'10060','select * from knss2009.dbo.yw_kck') select * from yw_kck 示例: --创建链接服务器 exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ',

SQLServer创建用户登录

萝らか妹 提交于 2020-02-09 00:56:28
创建用户登录注意事项 密码是区分大小写的。 只有创建SQL Server登录时,才支持对密码预先进行哈希运算。 如果指定MUST_CHANGE,则CHECK_EXPIRATION和 CHECK_POLICY必须设置为 ON。 否则,该语句将失败。 不支持CHECK_POLICY=OFF和 CHECK_EXPIRATION=ON的组合。 如果CHECK_POLICY设置为OFF,将对lockout_time进行重置,并将CHECK_EXPIRATION设置为OFF。 只有在Windows Server 2003及更高版本上才会强制执行CHECK_EXPIRATION 和 CHECK_POLICY。 从证书或非对称密钥创建的登录名仅用于代码签名。 不能用于连接到 SQL Server。 仅当master中已存在证书或非对称密钥时,才能从证书或非对称密钥创建登录名。 有关用于传输登录名的脚本,请参阅如何在 SQL Server 2005 和 SQL Server 2008 的实例之间传输登录名和密码。 自动创建登录名将启用新的登录名,并授予它服务器级CONNECT SQL 权限。 服务器的身份验证模式必须匹配登录名类型才能允许访问。 有关设计权限系统的信息,请参阅 Getting Started with Database Engine Permissions。

SQLServer使用脚本执行数据库备份

空扰寡人 提交于 2020-02-07 01:22:04
原文: SQLServer使用脚本执行数据库备份 背景 sql server express版无法使用作业,提供一种解决思路 fullbak.sql 完整备份 数据库实例级别的完整备份,备份路径为E:\sqlbak\数据库名\,注意需要添加好当前数据库实例各数据库名的子目录 EXEC sp_MSForEachDB 'USE [?]; PRINT DB_NAME(); DECLARE @databasename NVARCHAR(128) =DB_NAME(); --恢复模式为完整 IF EXISTS (SELECT * FROM sys.databases WHERE name=DB_NAME()AND recovery_model_desc=''FULL'')BEGIN DECLARE @backupname NVARCHAR(128); SET @backupname=''E:\sqlbak\''+@databasename+''\''+@databasename+''_fullbak_''+REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(50), GETDATE(), 120), ''-'', ''''), '':'', ''''), '' '', ''_'')+''.bak''; EXEC('' BACKUP DATABASE [''+

批量修改SQLServer数据库表字段属性

烈酒焚心 提交于 2020-02-04 11:37:18
以下提供一些场景,各位举一反三自行发挥 修改所有varchar为nvarchar,同时保持字段长度一致 declare c_sql cursor for SELECT sql = 'alter table [' + d.name + '] alter column [' + a.name + '] nvarchar('+Convert(varchar,a.length)+')' --** 修改为什么属性 FROM syscolumns a left join systypes b on a.xtype = b.xusertype inner join sysobjects d on a.id = d.id and d.xtype = 'U' and d.name <> 'dtproperties' where b.name = 'varchar' and not exists (SELECT 1 FROM sysobjects where xtype = 'PK' and name in (SELECT name FROM sysindexes WHERE indid in (SELECT indid FROM sysindexkeys WHERE id = a.id AND colid = a.colid))) --** 排除主键修改 order by d.name, a

查看sqlserver数据库中表大小

人盡茶涼 提交于 2020-02-03 07:07:57
--itlearner注:显示表信息 select * from tablespaceinfo order by cast(left(ltrim(rtrim(reserved)) , len(ltrim(rtrim(reserved)))-2) as int) desc --在查询分析器中运行 if not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tablespaceinfo]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) create table tablespaceinfo --创建结果存储表 (nameinfo varchar(50) , rowsinfo int , reserved varchar(20) , datainfo varchar(20) , index_size varchar(20) , unused varchar(20) ) delete from tablespaceinfo --清空数据表 declare @tablename varchar(255) --表名称 declare @cmdsql varchar(500) DECLARE Info_cursor CURSOR FOR select o.name

修正sqlserver索引错误

点点圈 提交于 2020-02-03 06:07:10
DBCC UPDATEUSAGE(ufdata_808_2002); 运行位置:查询分析器 主要用途: 意外关机或者日志被删除后,表发生紊乱,表保留空间过多,可使用本方法。使用后再进行数据库收缩,可缩小10%空间,并提高速度。基本每个数据库都有错误。 我单位用友数据库就是出现骉紊乱的情况,使用本命令就可以解决问题。 欢迎对用友8U和T6有疑问的朋友给我私信,或者QQ联系本人 来源: CSDN 作者: rslwf 链接: https://blog.csdn.net/rslwf/article/details/104141381