数据条带化是否可能像此处提到的在 SQL Server 2012 等最新版本的 SQL Server中的旧 SQL Server 2005中的数据条带化?
我知道这在 2008 和 2008R2 中是可能的。
Microsoft SQL Server 2008 R2 标准版
我想知道的是过去特定日期的数据库大小。我没有备份可以追溯到那么远。当前日志可能会也可能不会回溯足够远。
有没有办法检索这种类型的信息?
在应用程序的开发过程中,用户通常想要添加新模块、业务规则等。所以我经常使用 SQL Server 2008 选项从开发数据库创建脚本以生成新表,然后我将在发布之前在生产服务器上执行应用程序的新版本。
所以我想知道有没有办法将整个生成脚本文件放在事务中,如果在将所有内容返回到以前的状态时出现错误,没有添加新表,插入数据等时回滚更改。
如果有原因这不是推荐的方法,请解释。
我正在将 SQL Server 2000 迁移到 SQL Server 2008。我有很多看法。我如何检查每个视图是否有 order by 子句?
谢谢。
今天,在我们的 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) 我有一个有 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 之间的时间点?
时间线
谢谢,
使用在 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)上运行?如果有上下文切换,它的作用是什么?
我有一个应用程序,它记录了一个错误,如
Object <obj id> generated an exception.
Run Code Online (Sandbox Code Playgroud)
该应用程序将其所有信息存储在包含 100 多个表的 SQL Server 数据库中。
肯定在某个地方必须有一个包含这种类型的所有对象的表,我确定obj id那里是关键列。
我怎样才能找到这个对象?我是否必须创建 100 多个SELECT查询来查询每个表,或者可能有更方便的解决方案?
我的问题的总结是,使用 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)
例子:
使用的技术
数据库将是MariaDB。也许部分 RAW 数据将位于某个NoSQL数据库中。webservice 的语言在这里并没有真正的区别,但将是 PHP 5.4 和框架 Phalcon PHP。
可以使用不同类型的缓存,从 Varnish-cache 到 APC/Mencached,直到缓存在数据库中。
我最初的假设:
一个字段VARCHAR(10)需要 80 位。如果我使用一个自定义表只使用 64 个或更少的字符而不是 255 个字符,我会节省大约 …
我们一直在 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)
或者您使用什么方法来完成具有几天历史的备份?