我想要一些帮助/信息/资源为我的Web应用程序设置Team Build,MsBuild,TFS 2010自动部署到Azure(包括所有数据库位).
理想情况下,我想要一个可以从VS2010团队资源管理器UI"队列新构建"中启动的流程,然后只关注它的进度,让我开始处理其他事情.选择深入研究任何问题的日志记录,并知道我的流程是健壮的,完整的,完全非手动的,即:
在我上一次的FT工作中,我们使用CC.Net(管理流程),CCTray和CC.NET Web UI来监控和控制代码生成(CodeSmith + NetTiers模板对于数据访问和实体),MSBuild,VS Databse项目,一些.bat脚本,以及一些方便的实用程序,如PsExec等,以帮助解决一些小问题.我没有设置它,但有管理它的经验,处理问题等.
这是(98%的时间)部署的可爱体验.您需要确保TFS是最新的,双击CCtray,右键单击项目,然后单击"强制构建",坐下来观看绿色=>黄色=>绿色.
太棒了!!
我运行自己的Micro ISV,我的主项目是Azure上的应用程序(在Beta中).我非常希望复制以前的部署体验 - 我甚至考虑将Azure迁移到专用服务器 - 只是因为我知道我可以在那里设置自动部署系统.
我的主要停止点是DB位,看起来像是一场噩梦.也许我错过了一些很棒的免费工具或图书馆来完成这项工作,我真的很希望如此,但我也可以真正做到这一点的经验,指出我正确的方向,以获得"最佳实践"解决方案.所有的小点整齐地.
我已经搜索谷歌,阅读和阅读,烧了几个小时和几个小时,但我似乎找到的是一半解决方案,不适合我的项目和需求,基于我买不起的昂贵工具(接近0美元的预算),或者我的头脑清醒,有点难以理解和可怕.
现在我不是系统管理员,但是有足够的时间我通常可以解决我需要做的事情.
但是,我现在没有任何时间,我整个项目的成功真的取决于我能否减少我目前忍受的可怕的40分钟+手动部署浪费.
我希望能够获得一些用户反馈,发现错误或编写改进代码,并自信地启动部署并破解其他内容.
Azure在当前状态下开发的额外问题(与专用服务器相对),以及MS目前相当差的工具支持(我知道有很多改进,但我现在需要一些东西) - 让我游泳一个"我不知道"的海洋和"我不确定",并且倾向于以一个大的结尾:
"我放弃了+近一个小时的手动部署+内部的一点点抽泣,因为我的梦想部署天堂再次死亡":(
但是我知道那里的人比我自己更熟练,知识渊博,经验更丰富.我似乎无法找到我确信在那里的信息.
因此,如果有人对此有一些很好的资源,提示,链接,评论或意见,我很乐意听到.
应用程序在Azure中运行(处于测试阶段 - 部分原因是由于没有自动部署设置),在生产插槽中运行,我没有打扰暂存插槽,因为子域/ DNS /自动生成的一些问题网址让人看起来很痛苦/不可行.
Azure/App:
应用程序是
1 Web角色
1工作者角色 - …
这是一个依赖于两个非聚集索引的基本查询:
SELECT cc.categoryid, count(*) from company c
INNER JOIN companycategory cc on cc.companyid = c.id
WHERE c.placeid like 'ca_%'
GROUP BY cc.categoryid order by count(*) desc
Run Code Online (Sandbox Code Playgroud)
在SQL Server 2008上托管完全相同的数据库时,几乎在任何硬件上都会返回<500 ms.即使清除了缓存缓冲区:
DBCC FREEPROCCACHE
DBCC DROPCLEANBUFFERS
Run Code Online (Sandbox Code Playgroud)
...在传统的SQL上,这仍然会在~1秒内返回.
在Azure上,每次返回大约需要3.5秒.
有些文章似乎表明人们通常对SQL Azure中的查询性能感到满意.然而,这是一个基本的场景,其中"明显的"调优已经用尽,并且没有网络延迟问题可言.使用大表时工作速度非常慢(companycategroy有1.2M记录,地方有7.5K).
总数据库大小不超过4GB.选择"网络"版和"企业版"似乎也没有太大的区别.
我错过了什么?
这只是一个基本的例子,只有更复杂的查询才会变得更糟,所有这些都经过了审核,调整和内部执行.
这是执行计划:
|--Sort(ORDER BY:([Expr1004] DESC))
|--Compute Scalar(DEFINE:([Expr1004]=CONVERT_IMPLICIT(int,[Expr1007],0)))
|--Hash Match(Aggregate, HASH:([cc].[CategoryId]), RESIDUAL:([XX].[dbo].[CompanyCategory].[CategoryId] as [cc].[CategoryId] = [XX].[dbo].[CompanyCategory].[CategoryId] as [cc].[CategoryId]) DEFINE:([Expr1007]=COUNT(*)))
|--Hash Match(Inner Join, HASH:([c].[Id])=([cc].[CompanyId]))
|--Index Scan(OBJECT:([XX].[dbo].[Company].[IX_Company_PlaceId] AS [c]), WHERE:([XX].[dbo].[Company].[PlaceId] as [c].[PlaceId] like N'ca_%'))
|--Index …Run Code Online (Sandbox Code Playgroud) 我想将现有的SQL Azure位置转移到其他位置,但我认为现在没有功能可以在Azure的管理门户上执行此操作.
我只是谷歌搜索它,发现一个链接http://social.msdn.microsoft.com/Forums/en-US/ssdsgetstarted/thread/e6c961cc-5eea-4f07-82c9-a8805d367b05说我需要使用数据同步选项Azure的门户网站,但我的Azure门户中没有启用该功能.
此外,如果我使用该选项,是否有任何费用?最后,是否有其他选项可以移动SQL Azure位置?
我最近在我的SQL Azure数据库中添加了一个存储过程.我添加了以username1身份登录的过程.但是,我需要允许username2执行该存储过程的能力.据我所知,username2无法查看/执行存储过程.但是,username1可以.
我需要运行什么命令才能允许username2执行我的存储过程?我很有信心它是GRANT.但是,我不确定语法.有人可以举个例子吗?
我正在使用PowerShell将Visual Studio 2012上构建的dacpac部署到SQL Azure,并运行我认为可能与某些版本不兼容的问题.当我从visual studio执行时,发布工作正常,但是当我使用PowerShell执行它时抛出异常.
这是我在Powershell中所做的
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Management.Dac, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null
Trap
{
PrintException($_.Exception);
$fileStream.Close()
return;
}
$sqlServerFullName = $sqlServerName + ".database.windows.net"
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($sqlServerFullName, $adminLogin, $admingPwd)
$serverconnection.Connect()
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)
Write-Host "Reading contents from $dacpacPath..."
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)
Run Code Online (Sandbox Code Playgroud)
上面代码中的最后一行是崩溃的以下错误(内部异常值)而不是继续进行
The stream cannot be read to construct the DacType.
There is an error in XML document …Run Code Online (Sandbox Code Playgroud) sql-server powershell dac azure-powershell azure-sql-database
我目前正在将客户端数据库移动到SQL Azure,我们看到了一些性能问题.我们有一个高级的p2实例,但是我们看到SQL azure数据库的性能时间比当前数据库慢了3倍(sql server 2008具有相似的内核数和内存数).索引匹配,语句相同,数据也是如此.
我理解在共享的Azure SQL数据库下性能会很差,但是由于我们有一个p2实例,我希望性能更接近我们现有的sql server 2008数据库.任何人都可以提供任何洞察为什么p2可能比非常相似的规范的sql server 2008运行速度慢?我意识到需要考虑延迟,但是两个服务器都远离我的位置,因此这应该稍微平衡一下或只占一小部分差异,而不是200毫秒v 600毫秒的一个简单查询.
鉴于SQL Azure数据库目前缺乏性能调优工具,任何人都可以提供有关调整数据库性能的任何有用建议吗?
提前致谢
我也曾在MS azure论坛上问过这个问题,因为我不确定会得到多少关注.http://social.msdn.microsoft.com/Forums/windowsazure/en-US/cf269a65-7222-4c67-a294-3fa2f67c9583/sql-azure-premium-p2-performance-issues?forum=ssdsgetstarted
我非常熟悉从Azure SQL V12导出到我的开发框,然后导入到我的本地sql(2014)实例的过程.我正在启动一个新的Win10盒子并安装了SQL 2016 CTP.我正在连接到同一个Azure实例并且可以对其进行操作 - 并且可以像2014年一样导出.bacpac.
但是,当我尝试导入到本地时,我得到:
Could not import package.
Warning SQL72012: The object [FOO33_Data] exists in the target, but it will not be dropped even though you selected the 'Generate drop statements for objects that are in the target database but that are not in the source' check box.
Warning SQL72012: The object [FOO33_Log] exists in the target, but it will not be dropped even though you selected the 'Generate drop statements for objects that are in …Run Code Online (Sandbox Code Playgroud) 我的组织需要一个共享数据库,共享模式多租户数据库.我们将根据TenantId进行查询.我们将只有极少数租户(少于10个),并且所有租户都将共享相同的数据库架构,不支持特定于租户的更改或功能.租户元数据将存储在内存中,而不是存储在DB(静态成员)中.
这意味着所有实体现在都需要TenantId,并且DbContext需要知道默认情况下对此进行过滤.
该TenantId会可能是由一个标头值或原始域来识别,除非有更明智的做法.
我已经看到各种样本利用拦截器,但没有看到TenantId实现的明确示例.
我们需要解决的问题:
tenantId)Users,以某种方式将它们与租户联系起来.我认为最大的问题是4 - 修改DbContext.
我喜欢本文如何利用RLS,但我不知道如何以代码优先,dbContext方式处理它:
我要说的是我正在寻找的是一种方法 - 考虑到性能 - 使用DbContext有选择地查询tenantId隔离的资源,而不需要调用我的调用"AND TenantId = 1"等.
更新 - 我找到了一些选项,但我不确定每个选项的优缺点是什么,或者是否有一些"更好"的方法.我对选项的评估归结为:
方法A.
这似乎"昂贵",因为每次我们新建dbContext时,我们都必须重新初始化过滤器:
首先,我设置了我的租户和界面:
public static class Tenant {
public static int TenantA {
get { return 1; }
}
public static int TenantB
{
get { return 2; }
}
}
public interface ITenantEntity …Run Code Online (Sandbox Code Playgroud) c# entity-framework multi-tenant ef-code-first azure-sql-database
在内部部署SQL数据库中,有一个维护计划可以偶尔重建索引,而不是那么多.
如何在Azure SQL DB中进行设置?
PS:我之前尝试过,但由于我找不到任何选项,我想也许他们自动这样做,直到我读完这篇文章并试过:
SELECT
DB_NAME() AS DBName
,OBJECT_NAME(ps.object_id) AS TableName
,i.name AS IndexName
,ips.index_type_desc
,ips.avg_fragmentation_in_percent
FROM sys.dm_db_partition_stats ps
INNER JOIN sys.indexes i
ON ps.object_id = i.object_id
AND ps.index_id = i.index_id
CROSS APPLY sys.dm_db_index_physical_stats(DB_ID(), ps.object_id, ps.index_id, null, 'LIMITED') ips
ORDER BY ps.object_id, ps.index_id
Run Code Online (Sandbox Code Playgroud)
azure ×6
sql-server ×5
c# ×1
dac ×1
deployment ×1
msbuild ×1
multi-tenant ×1
powershell ×1
sql ×1
ssms ×1
tfs ×1