昨天我发现设置自动增长数据库不是一件好事.
在生产SQL Server数据库时是否还有其他基本的"坏"做法(或最佳做法)?
thx,Lieven Cardoen
我有一个控制台应用程序,它将connectionstring作为参数.我必须在app.config中设置一个名为'ConnectionString'的ConnectionString,并将给定的参数设置为sql connectionstring.
谢谢答案.借助我的链接,我得到了这个:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); var connectionStringSettings = new ConnectionStringSettings("ConnectionString",_ arguments ["connectionString"],"System.Data.SqlClient"); config.ConnectionStrings.ConnectionStrings.Add(connectionStringSettings); config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection( "的ConnectionStrings");
有没有办法做到这一点,例如在Transact-sql中使用某种条件运算符?
IF @ParentBinaryAssetStructureId = -1
BEGIN
SET @ParentBinaryAssetStructureId = NULL
END
UPDATE BinaryAssets.BinaryAssetStructures
SET ParentBinaryAssetStructureId = @ParentBinaryAssetStructureId
WHERE BinaryAssetStructureId = @OriginalBinaryAssetStructureId
Run Code Online (Sandbox Code Playgroud) 我已经问了一个关于这个的问题,但问题一直在打击我;-)
我有两张相同的桌子.我想添加一个xml列.在第一个表中这没有问题,但在第二个表中我得到sqlException(标题).但是,除了它中的数据,它们是相同的.那么,我可以因为表中的数据而得到sqlException吗?
我还尝试将该字段存储在页面外
EXEC sp_tableoption 'dbo.PackageSessionNodesFinished',
'large value types out of row', 1
Run Code Online (Sandbox Code Playgroud)
但没有任何成功.相同的SqlException不断涌现.
第一个表:PackageSessionNodes
CREATE TABLE [dbo].[PackageSessionNodes](
[PackageSessionNodeId] [int] IDENTITY(1,1) NOT NULL,
[PackageSessionId] [int] NOT NULL,
[TreeNodeId] [int] NOT NULL,
[Duration] [int] NULL,
[Score] [float] NOT NULL,
[ScoreMax] [float] NOT NULL,
[Interactions] [xml] NOT NULL,
[BrainTeaser] [bit] NULL,
[DateCreated] [datetime] NULL,
[CompletionStatus] [int] NOT NULL,
[ReducedScore] [float] NOT NULL,
[ReducedScoreMax] [float] NOT NULL,
[ContentInteractions] [xml] NOT NULL,
CONSTRAINT [PK_PackageSessionNodes] PRIMARY KEY CLUSTERED
(
[PackageSessionNodeId] ASC
)WITH (PAD_INDEX = OFF, …Run Code Online (Sandbox Code Playgroud) 在我们的客户,候选人使用我们的软件进行测试.如果他们的测试完成,则在服务器上进行一些计算.现在,有时候,200名考生可以同时结束考试,因此可以同时进行200次计算.计算似乎都很好,但有些调用IIS7服务器得到一个http错误...
在Flex中,这是错误:
code = "NetConnection.Call.Failed"
description = "HTTP: Status 200"
details = "http://servername/weborb.aspx"
level = "error"
Run Code Online (Sandbox Code Playgroud)
状态200不正常吗?那么这里有什么问题?它甚至是IIS7的问题吗?在200名候选人中,有20人得到了此消息.重新开始测试时,一切运行良好.
我已经在这个问题上找到了这个,但我想知道这是否与我的问题有关(下周我们的客户会做一些压力测试,我已经要求他们测试测试这个帖子中的解决方案是否有效).
一些问题:
从技术上讲,将来我想排队计算,但就目前来说,没有时间也没有预算.
应用程序:Flex,WebORB,ASP.NET,IIS7和SQLSERVER2008.服务器是Windows Server 2008.
是否可以在服务器和客户端上缓存http处理程序的响应?
这似乎没有做到这一点:
_context.Response.Cache.SetCacheability(HttpCacheability.Public); _context.Response.Cache.SetExpires(DateTime.Now.AddDays(7));
_context是作为IHttpHandler实现上的ProcessRequest方法的参数传递的HTTPContext.
有任何想法吗?
更新:客户端会缓存通过httphandler加载的图像,但如果另一个客户端执行相同的调用,则服务器尚未缓存它.因此,对于要求图像的每个客户端,服务器都会转到数据库(和文件流).如果我们使用aspx页面而不是httphandler和缓存配置文件,那么图像将缓存在客户端和服务器上.
我正在研究的应用程序的一部分是一个swf,它显示了一个包含80个问题的测试.每个问题都通过WebORB和ASP.NET保存在SQL Server中.
如果候选人完成测试,则需要验证会话.问题是有时350名候选人在同一时间完成测试,并且Web服务器和SQL Server上的CPU爆炸(同时进行350次验证).
现在,我该如何在这里实施排队?在数据库中,有一个表,其中包含每个会话的记录.一栏保持状态.1完成,2验证.
我可以通过两种方式实现排队(正如我所看到的,也许你有其他命题):
现在:
对我来说,使用表格并查找状态为1的记录似乎是最简单的方法.
我正在使用这段代码发送邮件:
SmtpClient client = new SmtpClient();
client.Host = smtpServer;
client.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)
如果我触发此代码十次/秒,那么在发送一百封邮件之后,发送邮件需要10秒......这里是否有一个队列?
将消息发送到远程队列时,会在您自己的计算机上创建临时传出队列.这是否意味着如果您自己的计算机上未安装MSMQ,则无法使用远程队列?
sql-server ×4
asp.net ×2
c# ×2
database ×2
msmq ×2
.net ×1
apache-flex ×1
app-config ×1
caching ×1
httphandler ×1
iis ×1
iis-7 ×1
production ×1
queue ×1
smtp ×1
sql ×1