小编Ed *_*ehm的帖子

SQL Server:数据库陷入"恢复"状态

我备份了一个数据库:

BACKUP DATABASE MyDatabase
TO DISK = 'MyDatabase.bak'
WITH INIT --overwrite existing
Run Code Online (Sandbox Code Playgroud)

然后尝试恢复它:

RESTORE DATABASE MyDatabase
   FROM DISK = 'MyDatabase.bak'
   WITH REPLACE --force restore over specified database
Run Code Online (Sandbox Code Playgroud)

现在数据库仍处于恢复状态.

有些人认为这是因为备份中没有日志文件,需要使用以下方式前滚:

RESTORE DATABASE MyDatabase
WITH RECOVERY 
Run Code Online (Sandbox Code Playgroud)

当然,除此之外,失败:

Msg 4333, Level 16, State 1, Line 1
The database cannot be recovered because the log was not restored.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Run Code Online (Sandbox Code Playgroud)

确切地说,在灾难性的情况下你想要的是一种无法恢复的恢复.


备份包含数据和日志文件:

RESTORE FILELISTONLY 
FROM DISK = 'MyDatabase.bak'

Logical Name    PhysicalName
=============   =============== …
Run Code Online (Sandbox Code Playgroud)

sql-server backup restore

549
推荐指数
15
解决办法
87万
查看次数

如何从不同分支中的特定提交创建分支

我在master分支中做了几次提交,然后将它们合并到dev分支.

我想从dev分支中的特定提交创建一个分支,它首先在master分支中提交.

我使用了命令:

git checkout dev
git branch  <branch name> <commit id>
Run Code Online (Sandbox Code Playgroud)

但是,这会从master分支创建分支,而不是我期望的dev分支.master分支和dev分支中的commit id相同.那么,我如何区分不同分支中的相同提交ID?

PS:我在github上做了一个例子https://github.com/RolandXu/test_for_branch

我使用了命令:

git checkout dev
git branch test 07aeec983bfc17c25f0b0a7c1d47da8e35df7af8
Run Code Online (Sandbox Code Playgroud)

我期望的是测试分支包含aa.txt bb.txt cc.txt.但是,测试分支仅包含aa.txt和cc.txt.它很可能是从主分支创建了分支.

git git-branch

64
推荐指数
5
解决办法
10万
查看次数

我应该使用MSMQ或SQL Service Broker进行交易吗?

我的团队负责人已经要求我调查MSMQ作为我们产品新版本的选项.我们在当前版本中使用SQL Service Broker.我已经完成了相当多的实验和谷歌搜索,以找到哪个产品更符合我的需求,但我想我会问我最熟悉的网站来编程答案.

一些细节:

  • 我们的客户端是.NET 1.1和2.0代码; 这是消息发送的地方.
  • SQL Server 2005实例中的目标.所有消息最终都是数据库更新或插入.
  • 我们将发送几个必须被视为交易的更新.
  • 我们必须拥有完美的消息可恢复性; 没有消息可以丢失.
  • 即使目标SQL服务器关闭,我们也必须是异步的并且能够接受消息.
  • 开发我们自己的排队解决方案不是一种选择; 我们是一个小团队.

到目前为止我发现的事情:

  • MSMQ和SQL Service Broker都可以完成这项工作.
  • 对于事务性消息来说,服务代理似乎更快.
  • Service Broker需要在某处运行SQL Server,而MSMQ需要在任何地方运行任何已配置的Windows机器.
  • MSMQ似乎更好/更快/更容易在群集中设置/运行.

我错过了什么吗?这里有明显的赢家吗?任何想法,经验或链接都会受到重视.谢谢!

编辑:我们最终坚持使用服务代理,因为我们的一些客户端代码中使用了自定义数据库框架(我们更好地处理事务).该代码捕获了事务的SQL,但没有.客户端代码也是.NET的1.1版本,因此我们必须升级所有客户端代码.谢谢你的帮助!

sql msmq transactions service-broker

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

使用分隔符加入字符串

将字符串列表连接到组合分隔字符串的最佳方法是什么.我主要关注何时停止添加分隔符.我将使用C#作为我的示例,但我希望这与语言无关.

编辑:我没有使用StringBuilder使代码稍微简单.

使用For循环

for(int i=0; i < list.Length; i++)
{
    result += list[i];
    if(i != list.Length - 1)
        result += delimiter;
}
Run Code Online (Sandbox Code Playgroud)

使用For循环设置之前的第一个项目

result = list[0];
for(int i = 1; i < list.Length; i++)
    result += delimiter + list[i];
Run Code Online (Sandbox Code Playgroud)

这些对于IEnumerable不起作用,因为你事先不知道列表的长度

使用foreach循环

bool first = true;
foreach(string item in list)
{
    if(!first)
        result += delimiter;
    result += item;
    first = false;
}
Run Code Online (Sandbox Code Playgroud)

foreach循环的变化

来自Jon的解决方案

StringBuilder builder = new StringBuilder();
string delimiter = "";
foreach (string item in list)
{
    builder.Append(delimiter);
    builder.Append(item); …
Run Code Online (Sandbox Code Playgroud)

language-agnostic string algorithm

22
推荐指数
5
解决办法
5万
查看次数

使用HtmlAgilityPack删除属性

我正在尝试style使用HtmlAgilityPack创建一个代码段来删除所有属性而不管标记.

这是我的代码:

var elements = htmlDoc.DocumentNode.SelectNodes("//*");

if (elements!=null)
{
    foreach (var element in elements)
    {
        element.Attributes.Remove("style");
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我没有坚持下去?如果我element立刻看了看对象Remove("style").我可以看到style属性已被删除,但它仍然出现在DocumentNode对象中.:/

我感觉有点傻,但它似乎对我来说?有人用HtmlAgilityPack做过这个吗?谢谢!

更新

我将我的代码更改为以下内容,并且它正常工作:

public static void RemoveStyleAttributes(this HtmlDocument html)
{
   var elementsWithStyleAttribute = html.DocumentNode.SelectNodes("//@style");

   if (elementsWithStyleAttribute!=null)
   {
      foreach (var element in elementsWithStyleAttribute)
      {
         element.Attributes["style"].Remove();
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

html html-parsing html-agility-pack

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

如何通过显示文本在ASP.NET下拉列表中设置所选项?

我有一个ASP.NET下拉列表,我通过数据绑定填充.我有与我想要选择的列表项目的显示文本相匹配的文本.我显然不能使用SelectedText(仅限getter)而且我不知道索引,所以我不能使用SelectedIndex.我目前正在通过遍历整个列表来选择项目,如下所示:

ASP:

<asp:DropDownList ID="ddItems" runat="server" /> 
Run Code Online (Sandbox Code Playgroud)

码:

ddItems.DataSource = myItemCollection;
ddItems.DataTextField = "Name";
ddItems.DataValueField = "Id";

foreach (ListItem item in ddItems.Items)
{
    if (item.Text == textToSelect)
    {
        item.Selected = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在不迭代所有项目的情况下执行此操作?

c# asp.net webforms

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

为什么"someString + = AnotherString = someString;" 在C#中有效

我今天正在编写一些代码,当我在另一台显示器上的屏幕上进行alt-tabbed以检查某些内容时处于中间位置.当我回头看时,ReSharper将灰色下面的第3行着色,并注明"分配的值未在任何执行路径中使用".

var ltlName = (Literal) e.Item.FindControl("ltlName");
string name = item.FirstName;
name += 

ltlName.Text = name;
Run Code Online (Sandbox Code Playgroud)

我很困惑; 肯定这段代码无法编译.但确实如此,它也运行了."name + ="行对字符串没有影响(我可以告诉).这里发生了什么?

(Visual Studio 2008,.NET 3.5)

c# .net-3.5

16
推荐指数
3
解决办法
539
查看次数

删除文件,但访问被拒绝

我有一个带有实体框架的mvc4应用程序.

我想删除一个文件,但每次都说:

mscorlib.dll中出现"System.UnauthorizedAccessException"类型的异常,但未在用户代码中处理

附加信息:访问路径'G:\ Mijn Documents\My Web Sites\Lolabikes - Copy\C#\ ContosoUniversity\Images \'被拒绝.

通过这一行:System.IO.File.Delete(path);

这是方法:

public ActionResult DeleteFiles(int id)
        {           
                //var fileName = Path.GetFileName(id.FileName);

                var DirSeparator = Path.DirectorySeparatorChar;
                var path = Server.MapPath("~\\Images" + DirSeparator);// + fileName.Replace('+', '_')));
               var file = db.lolabikerPhotos.Find(id);               
               System.IO.File.Delete(path);
               db.SaveChanges();           

            return Redirect(Url.Action("Edit", "Account") + "#tabs-3");

        }
Run Code Online (Sandbox Code Playgroud)

我只是在visual studio中运行应用程序,如下所示: http://localhost:41787/Account/Edit?UserId=hallo

我已经完成了以下事情:

完全访问地图,我将网络服务添加到地图并完全控制.但似乎没有任何效果.我正在使用Windows 7.我以管理员身份运行visual studio 2013

我也看到了这个:

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has …
Run Code Online (Sandbox Code Playgroud)

c# windows entity-framework asp.net-mvc-4 visual-studio-2013

15
推荐指数
2
解决办法
3万
查看次数

将XmlNodeList转换为XmlNode []

我有一个外部库,需要一个"XmlNode []"而不是XmlNodeList.有没有直接的方法来做到这一点,而无需迭代和转移每个节点?

我不想这样做:

XmlNode[] exportNodes = XmlNode[myNodeList.Count];
int i = 0;
foreach(XmlNode someNode in myNodeList) { exportNodes[i++] = someNode; }
Run Code Online (Sandbox Code Playgroud)

我在.NET 2.0中这样做,所以我需要一个没有linq的解决方案.

c# xml .net-2.0

10
推荐指数
3
解决办法
2万
查看次数

合并和提交后的SVN错误

我将一个分支合并到另一个分支,然后进行了一些自己的更改.当我去检查更改时,我收到此错误:

错误:
- C:\ dev\Backend\Backend_1.1.0.0
在目录
C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests'
错误处理命令'committed'在
'C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests'
无法将
C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests.svn\dir-props'移动到
C:\ dev\Backend\Backend_1.1.0.0\Unit Tests\MessageProcessor.Tests.svn\dir-prop-base':系统找不到指定的文件.

现在我无法提交(获取"工作副本锁定,请执行清理"消息),执行"清理"会给出与上面相同的消息.

当我删除违规目录时,如Greg Hewgill建议并进行更新,更新请求清理,并且清理会在不同的子目录上引发错误.

我将查看源的新副本并手动合并我的更改,但我想知道是否A)有更好的方法来解决这个问题和B)如果有人知道我做错了什么.

在Windows XP上使用TortoiseSVN 1.6.3,Build 16613和Subversion 1.6.3.

svn tortoisesvn

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