我有三个系统:DEV、UAT、PROD,都运行 SQL 2012 Enterprise。我有现有的包可以命中这些系统上的对象。每次我必须进行影响元数据的更改时,仅更新目标系统上的对象,然后更新指向系统的 SSIS 包,然后在系统上重新部署该包是不够的。即使在重新部署之前会更新包以处理新的元数据,我仍然必须进入每个系统并再次更新包,然后才能识别新的元数据。
这种行为对我来说是新的。在 BIDS 2008 中,一个系统上元数据的刷新将持续到它部署到的任何系统。现在,如果我在部署之前更改连接管理器,我必须返回并重新刷新元数据,然后才能发送它。似乎每个连接设置的元数据被保留,并且在更新包时不会更新。
一个例子,我可以清楚地说明这一点:我在所有三个系统上的目标表中添加了一列。我在指向 DEV 时更新包以反映更改,然后进行部署。到现在为止还挺好。然后我更新连接管理器以指向 UAT,并在那里部署更改的包。在这一点上,我希望不需要刷新元数据,因为 UAT 中目标表的模式与 DEV 中的模式相匹配,包在上次刷新时指向该模式。但是,该包就像未更新一样,需要在明确指向该系统的同时刷新其元数据才能工作。
为了解决这个问题,我在连接管理器上添加了一个由 System::MachineName 确定的 ServerName 属性的表达式,认为问题是在我正在开发的机器上更改连接管理器会立即触发检查那里的对象,即使延迟验证打开。没有这样的运气;它仍然显示相同的行为。
我在网上找不到太多关于此的信息,以确定它是 SSDT 2012 的预期行为还是我做错的事情或真正的错误。
任何人都对这个问题有任何见解?
使用sp_helpindex My_table我有这个列表:

但我的表只有这些索引:
为什么会这样?我正在使用查询在特定表中搜索“相等索引”。这个查询返回了很多我什至没有在表中的索引。
WITH IndexColumns AS (
SELECT '[' + s.Name + '].[' + T.Name + ']' AS TableName,
i.name AS IndexName, C.name AS ColumnName, i.index_id,ic.index_column_id,
COUNT(*) OVER(PARTITION BY t.OBJECT_ID, i.index_id) AS ColCount
FROM sys.schemas AS s
JOIN sys.tables AS t ON t.schema_id = s.schema_id
JOIN sys.indexes AS i ON I.OBJECT_ID = T.OBJECT_ID
JOIN sys.index_columns AS IC ON IC.OBJECT_ID = I.OBJECT_ID
AND IC.index_id = I.index_id
JOIN sys.columns AS C ON C.OBJECT_ID = IC.OBJECT_ID
AND C.column_id = IC.column_id …Run Code Online (Sandbox Code Playgroud) 昨天我在尝试在 SQL Server 2016 SP1 企业版上创建第一个 memory_optimized 表时遇到了一个问题。
我创建了数据库和文件组
CREATE DATABASE imoltp -- Transact-SQL
CONTAINMENT = NONE
ON PRIMARY
(
NAME = N'imoltp',
FILENAME = N'F:\UNREFRESHED_DB\imoltp.mdf' ,
SIZE = 5120KB ,
FILEGROWTH = 1024KB
)
LOG ON
(
NAME = N'imoltp_log',
FILENAME = N'F:\UNREFRESHED_DB\imoltp_log.ldf' ,
SIZE = 2048KB , FILEGROWTH = 10%
)
GO
ALTER DATABASE imoltp ADD FILEGROUP [imoltp_mod]
CONTAINS MEMORY_OPTIMIZED_DATA;
ALTER DATABASE imoltp ADD FILE
(name = [imoltp_dir], filename= 'F:\UNREFRESHED_DB\imoltp_dir')
TO FILEGROUP imoltp_mod;
go
Run Code Online (Sandbox Code Playgroud)
然后我创建了表
USE imoltp
GO …Run Code Online (Sandbox Code Playgroud) 我不得不修改一个完全在表格中组装的报告(1 列 10 行)。修改后,报告现在跨越多个页面,我需要它在一个点(即第 8 行的开头)自然中断。
有没有办法在表格中间添加分页符?
请注意,我尝试添加一个“矩形”并应用分页符但没有成功(在所需的行中,然后在上面的行中尝试)。
附加信息: - 使用 Visual Studio 2010 - DBMS = SQL Server 2012 R2
任何帮助将不胜感激。
我的 3 套副本集都变成了次要的,我不知道为什么。
我得到的日志是:
数据库1
2014-12-12T02:43:55.067+0000 [conn1413096] end connection
10.0.64.12:58483 (512 connections now open) 2014-12-12T02:43:55.067+0000 [initandlisten] connection accepted from
10.0.64.12:58485 #1413098 (513 connections now open) 2014-12-12T02:44:01.068+0000 [conn1413097] end connection
10.0.64.11:35195 (512 connections now open) 2014-12-12T02:44:01.069+0000 [initandlisten] connection accepted from
10.0.64.11:35197 #1413099 (513 connections now open) 2014-12-12T02:44:14.070+0000 [rsHealthPoll] couldn't connect to
10.0.64.12:27017: couldn't connect to server 10.0.64.12:27017 (10.0.64.12), connection attempt failed 2014-12-12T02:44:19.071+0000 [rsHealthPoll] couldn't connect to 10.0.64.12:27017: couldn't connect to server 10.0.64.12:27017 (10.0.64.12) failed, connection attempt failed 2014-12-12T02:44:22.072+0000 [rsHealthPoll] couldn't connect …Run Code Online (Sandbox Code Playgroud) 据我所知:- 当维度表不能与事实表直接关联时,使用桥接表。
例如,在银行的数据仓库中,由于多个客户可以与同一个银行帐户相关联,因此不能使用客户 ID 作为事实表和客户维度之间的链接来存储客户余额的事实表。(即联名账户)
所以使用事实表存储账户ID和账户维度和客户维度之间的桥接表来区分。
但是它们与解决事实表和另一个维度之间多对多关系的辅助表有什么不同呢?
我试图从性能方面了解哪种方法更好:
查询1:
SELECT * FROM table1
WHERE col1 NOT IN(SELECT col1 FROM table2)
Run Code Online (Sandbox Code Playgroud)
查询2:
SELECT * FROM table1
LEFT JOIN table2 ON table1.col1 = table2.col1
WHERE table2.col1 IS NULL
Run Code Online (Sandbox Code Playgroud)
第一个查询使用DEPENDENT SUBQUERY,第二个查询仅使用索引。
我有一个跟踪文件,包括由服务器端跟踪创建的 TEXTDATA 列。一些跟踪查询非常长。
如果我在 Profiler 上重新打开跟踪文件,则会完整显示相关的长查询 - 它有 340 行文本和 10951 个字符。
但是在我将跟踪文件导入 SQL-Server 表后,相关查询似乎被截断了。该表有一个由fn_trace_gettable方法创建的 ntext 列。
我使用不同的方法查询表:SSMS 中的文本输出(配置了最大数量的字符)在第 52 行中断输出。 SSMS (*.rpt) 的文件输出也被截断,这里查询在第 250 行被截断.
所以现在我想知道是否有可能将整个查询从跟踪文件中提取到 SQL-Server 表中,以及如何获取?
我想在 SSIS 数据流中使用来自 SQL Server 的表。表的列之一是date类型。当我使用 OLE DB 源组件将其导入 SSIS 时,SSIS 将此列的元数据更改为WSTR.
你知道如何解决它吗?我认为以前从未发生过。我知道我可以强制 SSIS 在高级编辑器中更改数据类型,但是 SSIS 不应该“知道”这是date类型列并将其转换为DT_DATE?
我SQLOLEDB.1用作提供者。它是 SQL Server 2012,列的数据类型只是date.
我在 sql server 日志中注意到以下内容,有什么方法可以确定发起此更改的登录名/用户。似乎数据库被设置为单用户模式并返回到多用户模式。这是日志片段
Date 10/10/2017 8:55:27 PM
Log SQL Server (Current - 10/11/2017 8:00:00 AM)
Source spid139
Message Setting database option MULTI_USER to ON for database 'DBNAME'
Run Code Online (Sandbox Code Playgroud)