小编QFD*_*Dev的帖子

SQL Server删除性能

我在.NET Web应用程序中有一个例程,允许我们平台上的用户清除他们的帐户(即删除他们的所有数据).此例程在存储过程中运行,并基本上遍历相关数据表并清除它们创建的所有各种项目.

存储过程看起来像这样.

ALTER procedure [dbo].[spDeleteAccountData](
    @accountNumber varchar(30) ) 
AS
BEGIN
    SET ANSI_NULLS ON ;
    SET NOCOUNT ON;

    BEGIN TRAN  
    BEGIN TRY
        DELETE FROM myDataTable1 WHERE accountNumber = @accountNumber
        DELETE FROM myDataTable2 WHERE accountNumber = @accountNumber
        DELETE FROM myDataTable3 WHERE accountNumber = @accountNumber
        //Etc.........

    END TRY
    BEGIN CATCH
        //CATCH ERROR
    END CATCH

IF @@TRANCOUNT > 0
    COMMIT TRANSACTION; 
SET ANSI_NULLS OFF;
SET NOCOUNT OFF;
END
Run Code Online (Sandbox Code Playgroud)

问题是,在某些情况下,我们可以在一张桌子上拥有超过10,000行,并且该过程最多可能需要3-5分钟.在此期间,数据库上的所有其他连接都会受到限制,导致如下所示的超时错误:

System.Data.SqlClient.SqlException(0x80131904):超时已过期.操作完成之前经过的超时时间或服务器没有响应.

我是否可以对提高性能进行一般性更改?我很欣赏有许多与我们的数据库模式设计有关的未知数,但欢迎一般的最佳实践建议!我考虑过将这项任务安排在凌晨运行,以尽量减少影响,但这远非理想,因为在完成此任务之前,用户将无法重新获得对其帐户的访问权限.

附加信息:

  • SQL Server 2008 R2标准版
  • 所有表都有聚簇索引
  • 没有任何触发器与任何相关表上的任何删除命令相关联
  • 外键引用存在于许多表中,但删除顺序说明了这一点.

编辑:格林尼治标准时间16:52

删除过程会影响大约20个表.最大的一个有大约500万条记录.其他人不再有200,000,其中一些仅包含1000-2000条记录.

sql sql-server performance stored-procedures sql-server-2008-r2

5
推荐指数
1
解决办法
4859
查看次数

SQL Azure数据库重试逻辑

我已经实现了以下代码,用于在写入Azure数据库时使用指数退避处理INSERT/UPDATE重试逻辑.

static SqlConnection TryOpen(this SqlConnection connection)
{
  int attempts = 0;
  while (attempts < 5)
  {
    try
    {
      if (attempts > 0)
       System.Threading.Thread.Sleep(((int)Math.Pow(3, attempts)) * 1000);
      connection.Open();
      return connection;
    }
    catch { }
    attempts++;
  }
  throw new Exception("Unable to obtain a connection to SQL Server or SQL Azure.");
}
Run Code Online (Sandbox Code Playgroud)

但是,我是否应该考虑为我的数据库读取应用重试逻辑?或者SqlCommand.CommandTimeout()方法是否足够?我的大多数读取都是使用以下代码创建的:

Dim myDateAdapter As New SqlDataAdapter(mySqlCommand)
Dim ds As New DataSet
myDateAdapter.Fill(ds, "dtName")
Run Code Online (Sandbox Code Playgroud)

很难知道在Azure的生产环境中会发生什么样的瞬态错误,所以我现在尝试尽可能多地进行缓解.

sql error-handling azure azure-sql-database

5
推荐指数
1
解决办法
6372
查看次数

获取 Web Deploy 以在发布后运行批处理文件

我正在使用 Web Deploy 将 Web 应用程序从 Visual Studio 2012 发布到我的目标 IIS 服务器。那里一切都好!

我现在想部署到网络场中的多台服务器(在工作组内)。我制作了一个 Robocopy 脚本,用于在将文件部署到第一个 Web 服务器后通过网络将文件复制到其他主机。我可以手动运行这个 bat 文件没问题,但我想在部署过程中自动化它。

到目前为止,我已经成功地编辑了.pubxml我的 VS 项目中的文件,如下所示。

  <ItemGroup>
    <MsDeploySourceManifest Include="runCommand">
      <Path>robocopy &quot;c:\web1&quot; &quot;\\REMOTEMACHINE\web1&quot; /MIR</Path>
    </MsDeploySourceManifest>
  </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这会运行命令 OK 但在所有文件同步之前。此外,根据发布日志,它运行了两次。在文件同步过程中。

.pubxml只有在所有文件同步后,我才能调整文件以运行该命令?

publish msdeploy visual-studio webdeploy

5
推荐指数
1
解决办法
2148
查看次数

仅适用于Internet Explorer 10的条件CSS

Internet Explorer 10打破了我的jQuery菜单.我可以通过对我们的CSS应用一个小修订来解决这个问题,如下例所示.

/* For Internet Explorer 10 ------*/
margin-top: 1px;

/* For all other browsers ------*/
margin-top: 2px;
Run Code Online (Sandbox Code Playgroud)

有没有办法在我的CSS中有条件地应用这些案例?

我知道浏览器嗅探并不理想,但这似乎工作正常:

if ($.browser.msie  && parseInt($.browser.version, 10) === 10) {
    $(".jMenu li ul").css("margin", "1px");
}
Run Code Online (Sandbox Code Playgroud)

html css conditional internet-explorer-10

4
推荐指数
1
解决办法
2万
查看次数

用于创建Azure数据库表的GUI

在迁移到Azure之前,我曾经直接从服务器资源管理器(Add New Table/ Open Table Definition)在Visual Studio 2010中为我的数据库创建和修改数据表.

不幸的是,似乎不再可能为SQL Azure数据库执行此操作,"功能不受支持".有没有人知道用于创建和修改数据表模式的基于GUI的工具?我显然可以编写这些更改的脚本,但使用GUI会更快.

Visual Studio 2012是否支持此功能?

user-interface azure azure-sql-database

4
推荐指数
1
解决办法
2万
查看次数

Azure中的.NET Forms身份验证 - 多个VM需要进行哪些更改?

我们目前正在将.NET Web应用程序迁移到Azure云服务,其中Web层在多个节点上运行(最初为两个).我想知道我们应该如何修改基于表单的身份验证机制以在负载平衡环境中运行?这是我们过去从未需要考虑的因素,因为我们的应用程序始终仅限于一个物理服务器.

目前我们在web.config中定义受保护的文件夹:

<location path="secure-area">
    <system.web>
      <authorization>
        <deny users="?"/>
      </authorization>
    </system.web>
  </location>
Run Code Online (Sandbox Code Playgroud)

登录页面中的代码如下所示:

if accountIsValid = true then
   FormsAuthentication.SetAuthCookie(sessionID, False)
   response.redirect("secure-area/index.aspx")
end if
Run Code Online (Sandbox Code Playgroud)

然后在整个应用程序中检索活动会话,如下所示:

Dim sessionID as string = User.Identity.Name.ToString
Run Code Online (Sandbox Code Playgroud)

据推测,此方法不会自动在多个节点上保持会话状态?我想知道Azure Fabric Controller是否会为我排序所有这些,而不必进行代码更改.也许是一厢情愿的想法!

任何帮助或链接到在线指南将非常感谢!

.net session forms-authentication session-state azure

3
推荐指数
1
解决办法
1886
查看次数

子表包含零行时的SQL SELECT

假设我有两张桌子:

Table A
employeeID (int)
employeeName (varchar)
employeeDOB (varchar)

Table B
employeeID (int)
holidaysUsed (int)
Run Code Online (Sandbox Code Playgroud)

表B与表A的关系employeeID.表B可以将零行或多行链接到单个employeeID.我想在表A上执行SELECT,但是当表B中没有相应的记录时,只检索表A中的行.

我对此有一些想法,但我想确保我使用最佳查询.任何帮助将非常感激.

附加信息

数据库平台:SQL Server 2008 R2

典型的返回数据集大小1000记录平均值.

sql sql-server select sql-server-2008-r2

2
推荐指数
1
解决办法
519
查看次数

第一个TD的CSS选择器,除非包含colspan

可以说我有下表:

<table style="width:500px">
 <tr>
    <td>Col 1</td>
    <td>Col 2</td>
 </tr>
 <tr>
    <td colspan="2"></td>
 </tr>
</table>
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用first-child选择器将样式应用于第一个TD,无论如何我可以让它忽略具有colspan的td(即使当然这是第一个孩子)?

table tr td:first-child{
  width:100px;
}
Run Code Online (Sandbox Code Playgroud)

如果有一种方法可以修改我的选择器,我会很高兴给td带有colspan它自己的类名apply to first child except when the class name is x吗?

css css-selectors

2
推荐指数
1
解决办法
3233
查看次数

S3 增量备份

我目前使用 S3 来存储大量帐户级数据,例如用户在我的应用程序中上传的图像、文本文件和其他形式的持久内容。我希望获取此数据的增量快照(每周一次)并将其发送到另一个 S3 存储桶。我想这样做是为了防止意外丢失数据,即我们的一位工程师不小心删除了 S3 浏览器中的一大块数据。

任何人都可以提出一些实现这一目标的方法吗?我们是否需要在 EC2 实例上托管我们自己的备份应用程序?是否有应用程序可以立即处理此问题?数据可以进入 S3 Glacier 并且不需要易于访问,它更像是一种保险单而不是其他任何东西。

编辑 1

我相信打开版本控制可能是答案(继续研究这个):http : //docs.amazonwebservices.com/AmazonS3/latest/dev/Versioning.html

编辑 2

对于寻找此问题答案的其他人,ServerFault 上有一个很好的线程。我后来才遇到这个:

https://serverfault.com/questions/9171/aws-s3-bucket-backups

backup amazon-s3 amazon-web-services

2
推荐指数
1
解决办法
8322
查看次数

运算符<未定义类型'char'和'integer'

我试图将一个代码块从C#转换为VB.NET.原始代码示例可以位于此处(请参阅接受的答案):

在构造使用数据的XmlReader或XPathDocument之前,如何从基于XML的数据源中删除无效的十六进制字符?

我使用在线工具进行了原始转换,尽管我在查询chchar对象的十六进制字符范围内有一个例外.

If (ch < &HFD AndAlso ch > &H1F)

提出的例外是operator < is not defined for types 'char' and 'integer'.VB解释我哪里错了?

Function RemoveTroublesomeCharacters(inString As String) As String
    If inString Is Nothing Then
        Return Nothing
    End If

    Dim newString As New StringBuilder()
    Dim ch As Char

    For i As Integer = 0 To inString.Length - 1

        ch = inString(i)
        ' remove any characters outside the valid UTF-8 range as well as all control characters
        ' …
Run Code Online (Sandbox Code Playgroud)

c# vb.net asp.net hex char

1
推荐指数
1
解决办法
1896
查看次数

包含冒号的ID的jQuery Selector

我正在尝试使用jQuery 2.0选择一个元素,其ID包含两个冒号,如下所示:

<div id="container:divobj:1">My Div</div>
Run Code Online (Sandbox Code Playgroud)

我使用双反斜杠来逃避冒号:

alert($("#container\\:divobj\\:1").length());
Run Code Online (Sandbox Code Playgroud)

每次我尝试运行此代码时都会收到错误消息:

对象[对象对象]的属性"长度"不是函数

我在这里设置了一个jsFiddle来说明.

我出错的任何想法?顺便说一下,我无法更改ID命名约定,因为这是在第三方上运行的用户脚本.

javascript jquery escaping jquery-selectors

0
推荐指数
1
解决办法
116
查看次数