我们正在构建一个最初为 1 TB 的数据仓库,并将每月增长约 20gigs。
对于某些表,我们每天都在执行 ETL 过程,而对于其他表,我们每周/每月执行一次。
当有数据导入到表中时,是否需要删除并重新创建索引?
是否有必要删除和重新创建索引,或者它们是否会自动更新?
统计信息设置为自动更新。
非常感谢您的帮助和指导。
我得到了这个天才脚本:
SELECT 'ALTER INDEX [' + ix.name + '] ON [' + s.name + '].[' + t.name + '] ' +
CASE WHEN ps.avg_fragmentation_in_percent > 40 THEN 'REBUILD' ELSE 'REORGANIZE' END +
CASE WHEN pc.partition_count > 1 THEN ' PARTITION = ' + cast(ps.partition_number as nvarchar(max)) ELSE '' END
FROM sys.indexes AS ix INNER JOIN sys.tables t
ON t.object_id = ix.object_id
INNER JOIN sys.schemas s
ON t.schema_id = …
Run Code Online (Sandbox Code Playgroud) 我的公司希望有大约 100 名销售人员(分布在全国各地)能够从 excel 运行存储过程并将数据返回到电子表格中。
我们有 sql server 2008。我需要找出一种安全的方法来做到这一点。
我将在 excel 中创建一个表单,用户可以在其中按下命令按钮以根据他们选择的参数刷新数据。
我发现这是非常好的信息:http : //office.microsoft.com/en-us/excel-help/connect-to-import-sql-server-data-HA010217956.aspx
Windows 身份验证 选择此选项以使用当前用户的 Windows 用户名和密码。这是最安全的方法,但当许多用户连接到服务器时,它会影响性能。
但是,我希望您对此提出意见。
是的,销售代表确实有 Windows 登录,但是如果他们实际上要输入指定数据标准,然后将标准发送到存储过程,然后从服务器获取数据,我可以使用这个解决方案吗?
我有一个从 sql server 2012 到 pervasive sql 的链接服务器的连接。
当我做的select field1, field2, field3 from mytable
一切正常!
但是,当我这样做时,select field1, field2, field3, field4, ...field10+ from mytable
我收到此错误消息:
Msg 7399, Level 16, State 1, Line 1
The OLE DB provider "MSDASQL" for linked server "KSLAP208" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "MSDASQL" for linked server "KSLAP208".
Run Code Online (Sandbox Code Playgroud)
我查看了日志,这是它所说的:
2013-02-08 11:27:30.93 spid55 ***Stack Dump …
Run Code Online (Sandbox Code Playgroud) 我正在对数据库进行跟踪并将跟踪实时转储到表中。
我进行跟踪的原因是我想查看对数据库执行的所有查询。
+-----------+------------+----------+------------------------------+------------+-----------+-----+-------+--------+-----------+-----------------+------+-------------------------+-------------------------+------------+
| RowNumber | EventClass | TextData | ApplicationName | NTUserName | LoginName | CPU | Reads | Writes | Duration | ClientProcessID | SPID | StartTime | EndTime | BinaryData |
+-----------+------------+----------+------------------------------+------------+-----------+-----+-------+--------+-----------+-----------------+------+-------------------------+-------------------------+------------+
| 13073 | 15 | NULL | .Net SqlClient Data Provider | NULL | reviewer | 0 | 2172 | 0 | 439776000 | 5096 | 104 | 2012-12-14 12:54:22.893 | 2012-12-14 13:01:42.670 | NULL |
| 13057 | 15 | NULL | .Net SqlClient …
Run Code Online (Sandbox Code Playgroud) 运行此代码:
ALTER TABLE npidata
ALTER COLUMN npi varchar(20)
Run Code Online (Sandbox Code Playgroud)
给出这个错误:
消息 9002,级别 17,状态 4,第 2 行
数据库“SalesDWH”的事务日志已满。要找出无法重用日志中的空间的原因,请参阅 sys.databases 中的 log_reuse_wait_desc 列
我正在将NPI
列的数据类型从更改varchar(80)
为varchar(20)
。
下面的代码给了我同样的错误信息:
insert into npidata1 select * from npidata
Run Code Online (Sandbox Code Playgroud)
log_reuse_wait_desc
显示 NOTHING
SIMPLE
autogrowth
被设定为 NONE
autoshrink
被设定为 true
我还可以做些什么?我的理解是日志应该在每次变得太大时截断。我究竟做错了什么?
我无法将 ODBC 64 位驱动程序与在 SQL Server 2012 64 位实例上运行的 SSMS 2012 一起使用。但是,我相信 32 位驱动程序可以工作。
我的问题是我可以使用 SSMS 2005 32 位在 SQL Server 2012 的 64 位实例上使用 ODBC 创建链接服务器吗?我尝试这样做,但是当我单击“确定”以创建链接服务器时,我收到了消息:
索引超出数组范围
我在做什么完全错误,或者有什么方法可以使用 32 位 ODBC 连接创建此链接服务器?