我有一个事实表 CardTransactionFact
表结构
TABLE [dbo].[CardTransactionFact]
[CardTransactionID] [int] IDENTITY(1,1) NOT NULL,
[TransactionTerminalID] [int] NOT NULL,
[SourceAccountTypeID] [int] NULL,
[DestinationAccountTypeID] [int] NULL,
[RimNo] [varchar](15) NULL,
[CaptureCodeID] [int] NOT NULL,
[RoutingCodeID] [int] NOT NULL,
[ProcessingCodeID] [int] NOT NULL,
[ActionCodeID] [int] NOT NULL,
[NetworkCodeID] [int] NOT NULL,
[ProductCodeID] [int] NOT NULL,
[AcquiringCountryCodeID] [int] NOT NULL,
[IssuingCountryCodeID] [int] NOT NULL,
[TransactionCurrencyCodeID] [int] NOT NULL,
[AmountBD] [decimal](18, 3) NOT NULL,
[LocalCurrencyCodeID] [int] NOT NULL,
[CardIssuerBank] [int] NOT NULL,
[CardTypeID] [int] NOT NULL,
[SuspectTransactionFlag] [char](1) NOT NULL, …Run Code Online (Sandbox Code Playgroud) performance index sql-server-2008 facttable query-performance
我想知道 SSRS 中是否有设置来指示日期格式。我们需要在报告上以 dd/mm/yyyy 格式显示日期,并且从我在数据库中看到的值以这种方式存储。但是,当我将数据集中的数据字段(由存储过程呈现)放入时,SSRS 将日期更改为 mm/dd/yyyy 格式!
例如,我在表格中的联系日期为 :1972-02-20 00:00:00.000 并希望在报告中显示为 1972/02/20,但 SSRS 将其显示为 2/20/1972。
知道为什么以及如何解决它吗?
谢谢你。
干杯,纳西拉
在不同文件组上为操作系统创建数据库的优缺点是什么?我知道如果您想让数据库的静态部分在其他部分(位于不同的文件组)可以恢复时保持在线状态,这很有用。然而,这种情况对我们没有用(根据系统的性质)。
根据您的经验,如果在不同的文件组上创建数据库,我们还能获得其他好处吗?如果是这样,分配文件组的最佳做法是什么?
非常感谢。
我有一个预订系统的设计数据库。预订系统要求如下:
我在设计表格时面临的问题是有 3 个重要的控制变量 - 时间段、场地和 13 周。
我通过有一个包含固定行数的表格来起草设计。(因此,对于上午 8 点到下午 1 点,将有 5 个插槽,因此每周将有 25 个插槽。假设有 3 个场地,那么我将有 25 个插槽 x 3 个场地,这给了我 75 行。然后我乘以 75 至 26 周,因为系统将打开两个 13 周。因此,这将给我 1950 个固定行。
但是,问题是如果我通过在晚上 10 点结束来增加小时数,那么我每天将有 14 个时段,这意味着每周将有 70 个时段。如果场地增加到 10 个场地,那么,我将有 70 个插槽 x 10 个场地,这给我 700 排。当然,乘以 26 周,我将需要一个包含 18,200 个固定行的表。由于行太多,设计将难以管理。
该表将类似于以下内容:
+------------------------------------------------- ---------------------+ | 身份证 | 周 | 时间 | 地点 | 用户 | 状态 | …
在应用程序的开发过程中,用户通常想要添加新模块、业务规则等。所以我经常使用 SQL Server 2008 选项从开发数据库创建脚本以生成新表,然后我将在发布之前在生产服务器上执行应用程序的新版本。
所以我想知道有没有办法将整个生成脚本文件放在事务中,如果在将所有内容返回到以前的状态时出现错误,没有添加新表,插入数据等时回滚更改。
如果有原因这不是推荐的方法,请解释。
当前数据库将近 200GB,但是事务日志文件只有 4.1GB。我担心这是否会影响数据库的性能以及如何解决。
当我做这个查询时
DECLARE @DatabaseName VARCHAR(50) ;
SET @DatabaseName = 'dbname'
SELECT name ,
recovery_model_desc ,
log_reuse_wait_desc
FROM sys.databases
WHERE name = @DatabaseName
Show Recovery Model = Simple, Log Reuse Wait = Nothing.
Run Code Online (Sandbox Code Playgroud)
任何人都知道为什么日志文件这么小,这会影响性能吗?
我有一个客户在数据库中有一个带有自动编号 ID 字段的表。客户使用该 ID 作为存储在数据库中的唯一记录的用户友好标识符。一段时间后,我的应用程序将删除数据库中的旧记录,这样在任何给定时间通常会有大约 30k 条记录的滑动窗口。
这个功能很好,已经工作了几年,但现在数据库中的id已经上亿了,客户现在很难将故障id传达给外界。
他们想要做的,以及我希望找出如何做的,是将当前表中的所有记录,并将它们的 id 减少到从 1 开始,然后重新设定身份以开始计算新表的位置id 会。
在数学中:新 id = 当前 id - min(ID)
然后最后:新种子 = max(id)
谢谢
编辑
为了帮助澄清一件事,记录会定期从数据库中删除,因此开始:
1-30k 有效记录
5个月后:
1-2mil - 无记录 2mil - 2mil + 30k - 有效记录
用户本质上想要做的是从所有 id(仍然是唯一的)中减去 2mil,并假装以前的记录根本不存在。
我正在尝试通过编写备份和还原脚本来复制数据库。我的备份程序工作正常,但我不断收到错误消息
已为文件指定了冲突的文件重定位。只应为任何逻辑文件名指定一个 WITH MOVE 子句。
当我运行该程序进行还原时。
这是程序代码。谁能发现我的错误是什么?
ALTER PROCEDURE spDBRestore (@BackupName NVARCHAR(50), @RestoreName NVARCHAR(50))
AS
BEGIN
DECLARE @BackupPath NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\TemplateCopy\'+@BackupName+'.BAK',
@NewDBFileName NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\'+@RestoreName+'.mdf',
@NewLFFileName NVARCHAR(4000) = 'L:\MSSQL10_50.MSSQLSERVER\MSSQL\Data\'+@RestoreName+'_1.ldf'
select @BackupName, @RestoreName, @NewDBFileName, @newlffilename
RESTORE DATABASE @RestoreName
FROM DISK = @BackupPath
WITH FILE = 1,
MOVE @BackupName TO @NewDBFileName,
MOVE @BackupName TO @NewLFFileName,
NOUNLOAD,
REPLACE;
END
Run Code Online (Sandbox Code Playgroud) 有人可以强调SQL2008中数据库快照的优点。
我读了一些
“创建数据库快照时,SQL Server 不会分配与源数据库中数据文件当前大小相等的磁盘空间。相反,SQL Server 利用称为稀疏文件的操作系统功能。稀疏文件是本质上是文件分配表中的一个条目,几乎不占用磁盘空间。”
有人也可以告诉我如何在没有分配空间的情况下创建文件。
谢谢
有谁知道如何为月和年列创建唯一索引?
如:JAN 2012 应该是一个唯一索引,并且还有助于按月和年搜索和检索结果。
谢谢
sql-server-2008 ×10
sql-server ×5
backup ×1
date-format ×1
ddl ×1
facttable ×1
filegroups ×1
identity ×1
index ×1
performance ×1
rollback ×1
scripting ×1
ssrs ×1
storage ×1
transaction ×1