小编mar*_*c_s的帖子

SQL Server 2012 数据条带化

数据条带化是否可能像此处提到的在 SQL Server 2012 等最新版本的 SQL Server中的旧 SQL Server 2005中的数据条带化

我知道这在 2008 和 2008R2 中是可能的。

sql-server-2005 sql-server sql-server-2012

2
推荐指数
1
解决办法
996
查看次数

如何确定过去特定日期的 SQL Server 数据库的大小?

Microsoft SQL Server 2008 R2 标准版

我想知道的是过去特定日期的数据库大小。我没有备份可以追溯到那么远。当前日志可能会也可能不会回溯足够远。

有没有办法检索这种类型的信息?

sql-server-2008

2
推荐指数
1
解决办法
842
查看次数

回滚生成脚本

在应用程序的开发过程中,用户通常想要添加新模块、业务规则等。所以我经常使用 SQL Server 2008 选项从开发数据库创建脚本以生成新表,然后我将在发布之前在生产服务器上执行应用程序的新版本。

所以我想知道有没有办法将整个生成脚本文件放在事务中,如果在将所有内容返回到以前的状态时出现错误,没有添加新表,插入数据等时回滚更改。

如果有原因这不是推荐的方法,请解释。

sql-server-2008 scripting transaction rollback

2
推荐指数
1
解决办法
2070
查看次数

将 SQL Server 2000 迁移到 SQL Server 2008

我正在将 SQL Server 2000 迁移到 SQL Server 2008。我有很多看法。我如何检查每个视图是否有 order by 子句?

谢谢。

sql-server migration order-by view

2
推荐指数
1
解决办法
140
查看次数

插入和选择时奇怪的 sql server 行为

今天,在我们的 sql server 上的一个驱动器空间不足之后。该驱动器包含事件跟踪器日志,所以我认为这没什么大不了的,但后来我注意到当我将一条记录插入到数据库中时,它会将它插入到以前的记录之上而不是附加它。

当我做select *的时候,插入的记录首先出现。我能做些什么来解决这个问题吗?

section_d   section
-------------------
15          SDSD
16          SDSD2
17          SDSD2
18          adf

(4 row(s) affected)

insert into test2 values ('inserted row')

section_d   section
-----------------------
19          inserted row
15          SDSD
16          SDSD2
17          SDSD2
18          adf

(5 row(s) affected)
Run Code Online (Sandbox Code Playgroud)

sql-server order-by

2
推荐指数
1
解决办法
800
查看次数

SQL Server 的事务日志太大

我有一个有 33 GB 事务日志的数据库。这是因为数据库处于完全恢复模式,在第一次备份之前已经使用了 5 年以上。

我想使用以下命令截断和缩小日志文件

Backup log dbname with truncate_only
go
DBCC shrinkfile('logicalfilename',100)
Run Code Online (Sandbox Code Playgroud)

我想知道在我运行了上面的命令之后,将来我是否能够恢复到 Future full backup 1 和 2 之间的时间点?

时间线

  1. 预截断备份
  2. 截断和收缩
  3. 未来完全备份 1
  4. 未来全备份2

谢谢,

sql-server-2008 sql-server backup restore

2
推荐指数
3
解决办法
5934
查看次数

SQLOS 内部 – 调度

使用在 Windows Server 2008 R2 SP1 上运行的 SQL Server 2012 Enterprise Edition SP1 对于 SQLOS 上的每个逻辑处理器核心,都有一个分配给它的调度程序。这些调度程序可以被视为状态“VISIBLE ONLINE”sys.dm_os_schedulers

工作线程(任务)可以在调度程序上运行,并且这些线程(任务)可以具有各种状态,例如基于等待队列

a) 暂停在等待队列中等待资源可用
b) 可运行队列(主要是 FIFO,除非受资源调控器控制)或
c) 当前在调度程序上运行。

我的问题是说例如一个任务(SELECT在这种情况下是查询)首先进入调度程序(我们称之为调度程序 A)但发现它必须等到页面被带入内存(IO 操作)它现在被放入等待队列在挂起状态下,一旦 IO 完成,该特定工作线程(任务)就会发出信号并按到达该队列的顺序放入可运行队列。

任务是否总是必须转到调度程序A来完成其时间片,或者它可以切换其上下文,现在可以在没有可运行任务的任何空闲调度程序(我们称之为调度程序B)上运行?如果有上下文切换,它的作用是什么?

sql-server-2005 sql-server-2008 sql-server-2012

2
推荐指数
1
解决办法
661
查看次数

在 SQL Server 数据库中查找字符串

我有一个应用程序,它记录了一个错误,如

Object <obj id> generated an exception.
Run Code Online (Sandbox Code Playgroud)

该应用程序将其所有信息存储在包含 100 多个表的 SQL Server 数据库中。

肯定在某个地方必须有一个包含这种类型的所有对象的表,我确定obj id那里是关键列。

我怎样才能找到这个对象?我是否必须创建 100 多个SELECT查询来查询每个表,或者可能有更方便的解决方案?

sql-server

2
推荐指数
1
解决办法
123
查看次数

UTF8 与 ASCII 或自定义二进制格式:对非常大的表进行高性能优化

我的问题的总结是,使用 ASCII 或什至是专为这种情况设计的较小格式而不是字符串的 UTF-8 是否有优势,即使是最小的。

可以使用访问数据的网络服务器将一个 ASCII 字符串转换为更紧凑的格式。

在这个问题上,数据库上只有 1-3 个表处理大量数据,因此如果可以放入内存而不是访问磁盘,任何字节都可以产生影响。信息将通过 RESTfull 服务访问

读取与写入:

项目需要更多的读取而不是写入。但是写入有一个特点:每 10 秒就有 40-300 行新行插入到主表中。这些可以并行编写,因为它们不相互依赖。

内存与磁盘使用情况:

最近插入的行,将立即使用,也将插入到缓存中供 Web 服务使用,因此无需再次读取它们。但是对于旧记录的搜索,数据库将需要,并且应该很快。

这就是为什么我认为使用更少的字节来存储某些字段会有所不同:即使对于大量数据,也更容易适应内存。

如果我无法在内存中放入数据,并且数据库无法为我提供某种速度,或者我将需要强制每 10 秒对一个用户进行慢速表/分区扫描,或者我将被迫进行单选并将其缓存在 Web 服务器上,但这打破了 REST 概念中的“无状态”概念。

必须支持的字符

0-9,AZ, "-", "_"。也许需要“az”。只有 38 或 64 个字符,而且永远不会超过这个数。

目前,大多数列是

CHAR(3), CHAR(6), VARCHAR(8), VARCHAR(10). 
Run Code Online (Sandbox Code Playgroud)

例子:

  • ABC, XYZ
  • AB-EFG, XY-XPT
  • ABC123457
  • E47F6C、34210A、E48D37(十六进制字符串,可能存在特定于此的格式?)

使用的技术

数据库将是MariaDB。也许部分 RAW 数据将位于某个NoSQL数据库中。webservice 的语言在这里并没有真正的区别,但将是 PHP 5.4 和框架 Phalcon PHP。

可以使用不同类型的缓存,从 Varnish-cache 到 APC/Mencached,直到缓存在数据库中。

我最初的假设

一个字段VARCHAR(10)需要 80 位。如果我使用一个自定义表只使用 64 个或更少的字符而不是 255 个字符,我会节省大约 …

mysql nosql mariadb utf-8

2
推荐指数
1
解决办法
2337
查看次数

过去 5 天的 SQL Server 备份作业

我们一直在 SQL Server 2012 上进行每晚备份作业,但它附加到.bak文件而不是覆盖,所以在谷歌搜索时我发现master.dbo.xp_delete_file

我注意到我可以在date参数之前一次删除多个备份

我想保留 3 天,因此删除如下:

declare @dt datetime
select @dt=getdate()-3
EXECUTE master.dbo.xp_delete_file 0,N'D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\',N'bak',@dt,1
Run Code Online (Sandbox Code Playgroud)

看起来一切正常,但是对于备份,我可以创建这样的文件名吗?(注意 CONCAT() 中的 @today )

declare today varchar(10);
SELECT @today=CONVERT(char(10), GetDate(),126);

BACKUP DATABASE perfMaster TO DISK = CONCAT('D:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLSERVER\MSSQL\Backup\perfMaster_',@today,'.bak' 
WITH NOFORMAT, NOINIT,  
NAME = N'Full Database perfMaster Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 20
Run Code Online (Sandbox Code Playgroud)

或者您使用什么方法来完成具有几天历史的备份?

sql-server backup

2
推荐指数
2
解决办法
7954
查看次数