背景 (用单词问题掩盖了一个现实世界的问题)
Farmer Brown 在加利福尼亚州有一个桃园,向全国各地运送数十万个桃子。当一批桃子到达目的地时,送货员会检查桃子并保留所有未通过检查的桃子。
当检验不合格的桃子运回 Farmer Brown's 农场后,Farmer Brown's Peach Hospital 将修复桃子缺陷,并与下一批桃子一起重新发货。如果原来的桃子再次检查不合格,只要桃子是可挽救的,它们就会经历同样的过程。
桃子医院很贵,运费也很贵,所以Farmer Brown开始思考,“对于我在任何时间范围内运送的桃子,我总共运送了多少?在总数中,第二次运送了多少?对于第三次(或更多)?”
在高层次上,桃子发货跟踪表(在 SQL Server 2000 数据库上)有超过900 万条不同类型发货的记录,看起来(大致)类似于:
ShipmentDate PeachID Shipment Type
8/10/2005 7112 Shipment to Customer
7/15/2007 8798 Shipment to Customer
4/3/2009 8798 Shipment to Customer
4/15/2009 8798 Shipment to Customer
4/21/2009 8798 Shipment to Customer
4/21/2009 145751 Shipment to Customer
4/22/2009 7112 Shipment to Customer
4/22/2009 12121 Shipment to Customer
4/25/2009 8798 Shipment to Customer
5/12/2009 8798 Shipment to Customer
Run Code Online (Sandbox Code Playgroud)
如果我们尝试返回 Farmer Brown …
现有设置 SQL Server 2005 带有标准 EAV 表,用户希望使用 BI 工具 (Cognos) 对其进行切片和切块。
有没有希望我们可以将这些数据转换成我们可以报告的格式?谷歌让我相信没有希望。我愿意相信某种解决方案已经存在。
我有超过 8 个数据库,并且都在 SQL Server 环境中。我需要从每个数据库的特定表(超过 50 个表)中提取数据并转储到中央数据库中以进行报告和分析(单向传输)。
所有数据库中的表结构都相同。请注意,我的所有数据库都位于同一台服务器上,中央数据库除外,它位于单独的服务器上。我已经评估了几个选项。我目前的想法和相关问题如下:
安全信息系统
使用 SSIS,我可以将数据从源数据库传输到目标数据库;但是,没有更改跟踪。我必须自己跟踪更改,然后手动提取和推送数据。除此之外,我将最终创建许多控制流和相关数据流,因为数据源不同,将来很难管理。
复制
复制具有更改跟踪,因此数据传输将足够快。但是,我必须针对每个数据库创建这么多发布者。我担心服务器性能会因此受到影响。我也不确定要使用哪种复制类型,或者是否可以通过更好的配置来处理任何性能问题。我可以接受每晚更新,数据传输不需要实时。
我应该如何从这里开始?
SQL Server 2012。本文底部的示例查询。
我正在尝试为上次备份给定数据库的时间创建一个简单的报告。
在 SSMS 中执行输出到文本的示例查询时,DB_NAME
列被格式化为数据的最大可能大小(DB2 中存在相同的问题,顺便说一句)。所以,我有一列包含从不超过 12 个字符的数据,但它存储在 中varchar(128)
,无论如何我都会得到 128 个字符的数据。RTRIM
对输出没有影响。
您知道有没有一种优雅的方法可以使格式化的列长度成为实际数据的最大大小,而不是数据的最大潜在大小?
我想存在一个xp_sprintf()
函数,但我不熟悉它,而且它看起来不是很健壮。
我试过像这样铸造它:
DECLARE @Servername_Length int;
SELECT @Servername_Length = LEN( CAST( SERVERPROPERTY('Servername') AS VARCHAR(MAX) ) ) ;
...
SELECT
CONVERT(CHAR(@Servername_Length), SERVERPROPERTY('Servername')) AS Server,
...
Run Code Online (Sandbox Code Playgroud)
但是 SQL Server 不会让我在转换时@database_name_Length
在我的varchar
定义中使用该变量。显然,SQL Server 在声明char
orvarchar
变量时需要一个文字数字。
我开始在字符串中构建语句并使用类似的东西sp_executesql
,或者构建一个具有我需要的实际列长度的临时表,这两者都比我希望去的只是为了不获得 100 更麻烦我的输出中有 128 个字符的列中的空格。
搜索了互联网并找到了bupkus。
也许我在寻找错误的东西,或者谷歌对我不利。
似乎 SSMS 会将列格式化为允许的最大大小,即使实际数据要小得多。我希望有一种优雅的方式来“解决”这个问题,而无需跳过箍。我正在使用 SSMS 2012。
如果我转到结果到网格,然后转到 Excel 或类似的东西,则会消除尾随空格。不过,我希望基本上创建一份我通过电子邮件发送的报告。 …
我被要求为一些人创建一些 sql server 报告(创建一个报告并通过电子邮件发送它们)。我以为会是 2 或 3 个,但现在他们知道我可以做到,每周我都需要再创建 1 或 2 个报告。
我使用 SQL Agent 和一些步骤来创建一个表,填充所需的结果,然后将它发送到一个 xls 文件中。那真的不是问题,但我想知道什么可以更好地用于此任务,因为现在我的 SQL 代理上有 20 多个作业。一切都井井有条,等等,但我仍然不喜欢看它。我已经有很多 DBA 工作,我不想混杂。
报告服务是一种可行的方法吗?我可以正常创建一个查询,他们将它发送到一个 excel 文件并通过电子邮件发送它而不使用 C# 或 Visual Studio 吗?
sql-server-2012 reporting enterprise-edition powerbi-report-server
在 SSRS 报告上切换图像的最佳方式是什么?
在我创建的报告中,有很多问题的答案是“是”或“否”,根据我对问题的价值,我想显示正确的图像。
例如我们有性别:
女
男
此报告仅用于输出,不会用于执行数据输入。
对于每条记录,无论该人是男性还是女性,我都在“性别”列中具有值。我想在正确的性别旁边显示一个带有刻度线的正方形,同时保持另一个选项框为空(一个空的正方形图像)。这应该像一个单选按钮一样起作用。
因此,如果记录有gender = 'Female'
,我应该在女性文本框旁边显示一个勾号图像,在男性文本框旁边显示一个空方块,反之亦然,如果gender = 'Male'
在记录中。
有什么建议?
我注意到,对于由我们的组织和我们的一些 ERA 软件提供商制作的 Crystal Reports,他们倾向于使用物理表作为他们报告的数据集,而不是使用视图或存储过程来收集数据。偶尔我看到报告使用存储过程,然后使用物理表而不是临时表来存储和操作数据集。在这些情况下,报告输出通常以类似rpt_ap_vendors
或类似的表格形式存在,并且在不使用时可能没有数据,也可能没有数据。
这些总是按需生成报告的情况,因此这不是可以生成一次并多次提供报告的情况,并且没有多个报告/存储过程同时访问此数据。
像这样的报告使用物理表有什么理由?这样做是否有逻辑、技术或性能相关的原因?在生成报告时,我个人一直使用带有临时表或更好的派生表的视图和存储过程,以避免涉及清除/删除临时表的额外磁盘读取。
在 Linux 上安装 Zabbix 报告工具时出现以下配置错误。我已经尝试了两个版本(zabbix-2.0.9,zabbix-1.8.17),但遇到了同样的问题。
日志:
checking for macro __VA_ARGS__... yes
checking return type of signal handlers... void
checking for getloadavg... yes
checking for hstrerror... yes
checking for getenv... yes
checking for putenv... yes
checking for sigqueue... yes
checking for /proc filesystem... yes
checking for file /proc/stat... yes
checking for file /proc/cpuinfo... yes
checking for file /proc/0/psinfo... no
checking for file /proc/loadavg... yes
checking for file /proc/net/dev... yes
checking for long long format... no
checking for -rdynamic linking option... yes …
Run Code Online (Sandbox Code Playgroud) 我们公司中有一组用户直接针对我们的生产数据库运行报告。他们已经到了足以导致公司其他部门出现绩效问题的地步。
我想在我们的本地数据中心内为他们设置一个报告数据库。我们的生产数据库位于全国不同的数据中心。由于成本原因,我无法在托管生产数据库的数据中心启动另一个 SQL Server 数据库。
在做我的研究时,似乎推荐的方法是Distributor
在与Publisher
数据库不同的服务器上使用?
我想知道运行 SQL Server Express 的实例是否足以充当Distributor
数据库的角色?这远程可行吗?
sql-server sql-server-2008-r2 sql-server-express reporting transactional-replication
我们有一个非常大的数据库,我们想几乎实时地编写它。我们想要获取数据并将其移动到数据库的另一个实例,在该实例之上将是一个 GUI 和 MI 工具,它将能够报告数据。
到目前为止,我有以下几点 - 在规范这个时,其他人有没有我应该记住的任何考虑因素:
我有一张road_insp
桌子:
create table road_insp
(
insp_id int,
road_id int,
insp_year int,
condition number(10,2)
);
insert into road_insp (insp_id, road_id, insp_year, condition) values ( 1, 100, 2009, 5);
insert into road_insp (insp_id, road_id, insp_year, condition) values ( 2, 100, 2011, 3);
insert into road_insp (insp_id, road_id, insp_year, condition) values ( 3, 102, 2009, 9);
insert into road_insp (insp_id, road_id, insp_year, condition) values ( 4, 102, 2010, 7);
insert into road_insp (insp_id, road_id, insp_year, condition) values ( 5, 102, 2013, …
Run Code Online (Sandbox Code Playgroud) 我知道这是一个笼统的问题,但我必须澄清一些基本问题。
我知道当对 SQL Server 数据库表进行写入时,对该表的读取将不得不等待。
我的问题是:我正在使用的 SQL 数据库服务器暴露于多次写入和少量读取。一些 SSRS 报告也在同一台服务器上运行。
我知道最好从同一数据库的重复实例执行报告。但是对于一些报表,是否值得设置一个重复的实例进行报表?
有时我会抱怨某些报告运行缓慢。
reporting ×12
sql-server ×4
blocking ×1
cognos ×1
eav ×1
errors ×1
installation ×1
linux ×1
locking ×1
oracle ×1
oracle-12c ×1
pivot ×1
query ×1
replication ×1
sqlite ×1
ssis ×1
ssms ×1
ssrs-2008 ×1
t-sql ×1
view ×1