这是我需要SQL管理员帮助的地方.我在Amazon EC2上有两个单独的SQL Server实例.一个是我们的暂存环境,另一个是我们的生产环境,但它们的配置方式完全相同(从同一图像中生成).
我们有一个数据库,我们上周从登台复制到我们的生产环境.我们将数据库复制到生产的方式是在备份站点上对其进行备份,并在生产中恢复备份.无论如何,我们发现在生产中,一个特定的复杂查询在一小时后超时,但我们的暂存环境中的确切查询在10分钟内完成.
关于两者的解释计划几乎是相同的,除了在一个服务器上它在大表(8M行)上进行PK扫描,而在另一个表上它正在进行索引搜索.我们假设这是不同的.因此,一台服务器正在执行大量磁盘IO,而另一台服务器则没有.
所以我的问题是,一个SQL服务器安装决定使用索引的原因是什么,而另一个忽略它 - 假设相同版本的SQL服务器和相同的数据集?更好的是,找出SQL忽略索引的最佳方法是什么?
我们使用Bouncy.Castle C#API进行PGP加密.我绝不是PGP加密专家和各种可用选项.
加密似乎运行正常,但是,当客户端尝试解密时,他说PGP不会输出到文件但只输出到屏幕,因为它标记为"仅供您选择".这是--verbose消息:
pgp --decrypt Client_FileExport_20110510_020011.zip.pgp
Client_FileExport_20110511_132203.zip.pgp --info verbose
McAfee E-Business Server v8.5 - Full License
(c) 1991-2006 McAfee, Inc. All Rights Reserved.
Setting temporary directory to C:\DOCUME~1\$963\LOCALS~1\Temp\
Decoding data....
event 1: initial
event 13: BeginLex
event 8: Analyze
File is encrypted. event 9: Recipients
Secret key is required to read it.
Key for user ID "Client_RSAv4_Key <Bob.Smith@Client.com>"
event 6: Passphrase
You need a pass phrase to unlock your secret key.
Enter pass phrase:
event 23: Decryption
symmetric cipher used: …Run Code Online (Sandbox Code Playgroud) 我有一个使用ASP.NET MVC 3.0构建的应用程序.它使用asp.net的内置表单身份验证,没有会话状态,并在浏览器上使用cookie来识别发出请求的用户.
现在,当我使用IE9测试应用程序时,典型的HTML请求会在标头中发送此用户代理,一切正常.
用户代理:Mozilla/5.0(兼容; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
但是,我们在应用程序中有一个页面,其中包含一个在浏览器中托管Microsoft Word的ActiveX容器.此ActiveX容器的目的是允许您对单词文档进行修改,单击按钮以将该单词文档与您对服务器的更改进行POST,以便可以保存它.
ActiveX控件中有一种方法 - 来自www.ocxt.com的Office Viewer Component - 称为HttpPost(),它将查看文档的内容发布到服务器.
当您调用HttpPost()时,它会正确发送所有相同的cookie,但使用不同的User-Agent字符串.
User-Agent:Mozilla/4.0(兼容; MSIE 5.5; Windows NT 4.0)
使用MSIE 5.5字符串的UserAgent似乎导致ASP.NET或MVC不将请求发送到适当的控制器,而是向Login页面发送重定向响应,即使cookie对于会话是正确的.我使用Fiddler进行了测试,并尝试使用MSIE 6.0,7.0,8.0,这些似乎工作正常,因此具体来说,5.5会导致部分服务器堆栈重定向到登录页面.
这个页面以前工作正常,所以我不确定最近的ASP.NET/MVC版本是否有变化,或者是因为我已经升级到IE9.0,但基本上,我想知道如果可以告诉ASP.NET在确定会话是否已经过身份验证时不考虑User-Agent.
谢谢.
我在表值函数的性能方面遇到了一个奇怪的场景。基本上,我有一个内联表值函数,它将 DATETIME 作为参数。
它看起来像这样(不完全是这样):
CREATE FUNCTION fn_MyFunction(@StartDate DATETIME)
RETURNS TABLE
AS
RETURN (
SELECT COUNT(*), CustomerID, SUM(PAID)
FROM Orders
WHERE OrderDate > @StartDate
GROUP BY CustomerID
)
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试调查此查询运行时间超过 1 分钟的问题。事实证明,如果我这样调用查询:
SELECT * FROM fn_MyFunction('7/1/2011')
Run Code Online (Sandbox Code Playgroud)
它运行 > 1 分钟。
但是,如果我这样调用查询:
DECLARE @startDate DATETIME = '7/1/2011'
SELECT * FROM fn_MyFunction(@startDate)
Run Code Online (Sandbox Code Playgroud)
它在一秒钟内运行。SQL Server 对这两个调用使用完全不同的解释计划。
显然,我希望它一直执行第二种方法,不幸的是,我通过 LINQ 2 SQL 调用这个表值函数,它不会声明临时变量。
有没有办法在内联表值函数中使用临时变量?我真的不想将其转换为多行表值函数。其他想法也将受到欢迎。我有点难住了。
我正在我的 Web 应用程序中嵌入 PDF 表单。该应用程序允许您填写表单中的字段,完成后,单击“提交”按钮,该按钮将保存您在表单中输入的所有内容。该功能运行良好。
不幸的是,Adobe Reader 在其嵌入控件顶部显示一条消息:“请填写以下表格。 您无法保存在此表格中输入的数据。 如果您需要一份副本作为记录,请打印您已填写的表格。”
现在,我知道 Adobe Reader 试图告诉用户什么。基本上,Adobe Reader 不允许您将输入的内容作为新的 PDF 保存到本地硬盘中。
但是,由于我们添加了一个“提交”按钮,该按钮将有效地保存他们在我们的应用程序中输入的内容,并且它正在工作。因此,我们认为此消息具有误导性,并希望将其删除。
我在 .Net 中使用 iTextSharp 作为表单自动化服务器端。我还没有找到从嵌入表单中删除此消息的方法。
有什么帮助吗?
我正在尝试在SQL Server 2008中编写一个非常复杂的查询.我想在这里得到SQL专家的一些意见.
想象一下,我有一个包含这些字段的付款表:
PaymentID int,CustomerID int,PaymentDate datetime,Amount decimal
基本上,它是客户在特定日期支付的表格.需要注意的一点是,在某些情况下,付款金额可能是负值.因此,随着时间的推移,任何给定客户支付的总金额可能会上升或下降.
我们要弄清楚的是用于计算每个客户支付总金额的高点的SQL.
因此,如果弗雷德支付3笔款项:首先是5美元,第二是5美元,第三是3美元.该报告将显示弗雷德的最高支付总额为10美元(第二次支付),他的最终支付金额为7美元.
我们需要为十万客户(他们可能每人支付一百到一千美元)运行此报告,因此它必须快速.
是否有一种很好的方法来构建此查询而不将运行总计存储在数据库中?如果可能的话,我们希望避免存储预先计算的值.
sql ×2
sql-server ×2
activex ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
encryption ×1
gnupg ×1
itext ×1
pdf ×1
pgp ×1
t-sql ×1