Monday, October 11, 2010
If you're looking for quick and effective free training on M$oft tools
Sunday, October 10, 2010
If you are using AutoFac and you see... "are you missing a using directive or an assembly reference" when using AutoFac
'Autofac.ContainerBuilder' does not contain a definition for 'RegisterAssemblyTypes' and no extension method 'RegisterAssemblyTypes' accepting a first argument of type 'Autofac.ContainerBuilder' could be found (are you missing a using directive or an assembly reference?)
or....'Autofac.ContainerBuilder' does not contain a definition for 'RegisterInterface' and no extension method 'RegisterInterface' accepting a first argument of type 'Autofac.ContainerBuilder' could be found (are you missing a using directive or an assembly reference?)
Friday, October 01, 2010
Back to basics - simple Azure table test results part 2
| UpdateConditionNotSatisfied | Precondition Failed (412) |
Back to basics - simple Azure table test results
Thursday, September 30, 2010
Azure Storage Performance
From a presentation by Brad Calder - Microsoft PDC 2009
Per Object/Partition Performance at Commercial Availability
Throughput
Single Queue and Single Table Partition
Up to 500 transactions per second
Single Blob
Small reads/writes up to 30 MB/s
Large reads/writes up to 60 MB/s
Latency
Typically around 100ms (for small trans)
But can increase to a few seconds during heavy spikes while load balancing kicks in
Tuesday, September 21, 2010
A really good explanation of SQL Server and indexes
Sunday, September 19, 2010
When your SQL log (ldf) file gets Huge...
Do you make transaction backups?
Yes -> Do not shrink the log unless you have done some exceptional operation (such as a massive delete) as the "cost" of SQL Server re-growing the Log file is significant, and will lead to fragmentation and thus worse performance.
No and I don't want to -> Change the Recovery Model to "Simple" - Enterprise Manager : Right click database : Properties @ [Options]
Don't know -> Transaction log backups allow you to recover to a "point in time" - you restore the last Full Backup (and possibly a subsequently Differential backup) and then every log backup, in sequence, until the "point in time" that you want to roll-forward to.
Saturday, September 18, 2010
Timing tests on Azure
Friday, September 17, 2010
Azure Storage Tools
Windows Azure Storage
Explorer
Block Blob
Page Blob
Tables
Queues
Free
X
Y
Azure Blob Compressor
Enables compressing blobs for upload and download
X
Y
X
Y
X
X
X
Y
X
X
X
Y
Cerebrata Cloud Storage Studio
X
X
X
X
Y/N
X
X
Y
Clumsy Leaf Azure Explorer
Visual studio plug-in
X
X
X
X
Y
X
Y
X
N
MyAzureStorage.com
A portal to access blobs, tables and queues
X
X
X
X
Y
X
Y
X
X
X
X
Y
Azure Links
Credit to Neil Mackenzie for this list - fromhttp://nmackenzie.spaces.live.com/blog/cns!B863FF075995D18A!706.entry
Azure Team
http://blogs.msdn.com/b/azuredevsupport/ – Azure Support Team
http://blogs.msdn.com/b/dallas/ – Microsoft Codename Dallas
http://blogs.msdn.com/b/sqlazure/ – SQL Azure Team
http://blogs.msdn.com/b/cloud/ - Windows Azure Developer Tools Team
http://blogs.msdn.com/b/windowsazurestorage/ – Windows Azure Storage Team
http://blogs.msdn.com/b/windowsazure/ – Windows Azure Team
Individual
http://blogs.msdn.com/b/partlycloudy/ – Adam Sampson
http://bstineman.spaces.live.com/blog/ – Brent Stineman (@BrentCodeMonkey)
http://blog.structuretoobig.com/ – Brian Hitney
http://channel9.msdn.com/shows/Cloud+Cover/ – Cloud Cover (@cloudcovershow)
http://www.davidaiken.com/ – David Aiken (@TheDavidAiken)
http://davidchappellopinari.blogspot.com/ – David Chappell
http://geekswithblogs.net/iupdateable/Default.aspx – Eric Nelson (@ericnel)
http://gshahine.com/blog/ – Guy Shahine
http://blogs.msdn.com/b/jmeier/ – J.D. Meier
http://blogs.msdn.com/b/jnak/ – Jim Nakashima (@jnakashima)
http://blog.maartenballiauw.be/ - Maarten Balliauw
http://nmackenzie.spaces.live.com/blog/ Neil Mackenzie (@mknz)
http://azuresecurity.codeplex.com/ - Patterns & Practices: Windows Azure Security Guidance
http://oakleafblog.blogspot.com/ – Roger Jennings (@rogerjenn)
http://dunnry.com/blog/ – Ryan Dunn (@dunnry)
http://scottdensmore.typepad.com/blog/ – Scott Densmore (@scottdensmore)
http://blog.smarx.com/ - Steve Marx (@smarx)
http://blogs.msdn.com/b/sumitm/ - Sumit Mehrotra
http://azure.snagy.name/blog/ – Steven Nagy (@snagy)
http://blog.toddysm.com/ - Toddy Mladenov (@toddysm)
Azure Status
http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx – Azure Status
Other Clouds
http://highscalability.com/ – High Scalability
http://perspectives.mvdirona.com/ – James Hamilton
http://www.allthingsdistributed.com/ – Werner Vogels
SQL Azure Management - Backup and Monitoring
SQL Azure does not support the normal SQL Server BACKUP commands.
It does provide inherent data redundancy and reliability. However, this will not help if:
- There is an app bug which corrupts your data.
- There's a hacker who destroys your data
- The Microsoft's datacenter loses all of your data (unlikely but possible)
- You can use the SQL Azure copy commands to copy your database contents to a second, still stored within SQL Azure - this will protect again only the first problem above (assuming the hacker has a way into your Azure store)
- You can use the open source SQL Azure Migration Wizard to download data to a local copy - this will provide a recovery mechanism for all 3 items above
SQL Azure Data Migration
Warning - using this for a backup process will involve a large amount of data transfer (which will cost money), but it's better than not having a backup at all.
Backup
To use this tool:
- download it from http://sqlazuremw.codeplex.com/
- choose "Analyze and migrate T-SQL database"
- choose the Azure database - yourserver.database.windows.net - username - username@yourserver - and password.
- Note that you can only connect to the SQL azure database from IP addresses whitelisted on the firewall settings on the SQL Azure web control panel
- choose "[databaseName]"
- choose "script all database objects"
- hit "next" and it will slowly happen
- choose your local SQL server to connect to
- create a new SQL server database
- hit "next" to insert the data into your local database
Restore
To do this:
- typically suspend the Azure web application
- use the Azure web user interface to drop the existing SQL Azure database
- run the steps above in reverse - from local to SQL Azure
- restart the Azure web application.
- - dependent on the technical level of the user - or if there's an automation server available, this backup process can be scripted using command line arguments - see the documentation for batch mode - http://sqlazuremw.codeplex.com/releases/view/32334#DownloadId=125697
- - this backup process should perhaps be combined with copy to ensure that the data downloaded is transactionally consistent (http://www.azuresupport.com/2010/08/sql-azure-backup-database-copy/). To do this:
- connect to SQL Azure using SQL Server Management Studio
- open a "New Query"
- type "CREATE DATABASE backupName AS COPY OF mainName"
- Hit Execute
The state of the copy can then be monitored using "select name, state, state_desc from sys.databases where name = 'backupName"
SQL Azure Monitoring
There really isn't much that can currently be done in the way of monitoring the health of an Azure SQL Server.
This http://msdn.microsoft.com/en-us/library/ff394114.aspx document describes the ability to query:
- Database size
- Number of connections - and their activity
- Some simple query performance
There is some access to overall status at http://www.microsoft.com/windowsazure/support/status/servicedashboard.aspx - but this is at a very coarse level.
The only current suggestions for checking a SQL server instance is alive are:
- just rely on Microsoft uptime (under their SLA) - not ideal
- use tools like Nagios to add "HTTP" monitoring to Azure applications connected to the SQL Server database - use this web monitoring to check the health of the server (at least to check it is alive).
- try to build something (e.g. a web app) based around sys.dm_exec_connections (http://msdn.microsoft.com/en-us/library/ff394114.aspx) which would provide some analysis of loading.
- try to extend the enzo SQL library - http://enzosqlbaseline.codeplex.com/ - it's benchmarking tools might give you some clue on current loading (but this monitoring might also impact your current performance).
Thursday, September 16, 2010
If you can't run the Visual Studio wizard for SharpArchitecture
creating the sub project 'sharp.Core'. A project with that name is
already opened in the solution."
Then it could be due to problems with AnkhSVN - see
http://www.softweb.net.au/blogs/development/sharp-architecture-new-project-wizard-is-incompatible-with-ankhsvn
So I had to uninstall source control to get it working....
Tuesday, September 14, 2010
If you hit a problem with ConfigMonitoringPoll - Polling for configuration changes - when using Azure Diagnostics
Polling for configuration changes:Microsoft.WindowsAzure.StorageClient.StorageClientException: The specified blob does not exist. ---> System.Net.WebException: The remote server returned an error: (404) Not Found. at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) at Microsoft.WindowsAzure.StorageClient.EventHelper.ProcessWebResponse(WebRequest req, IAsyncResult asyncResult, EventHandler`1 handler, Object sender) --- End of inner exception stack trace --- at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.get_Result() at Microsoft.WindowsAzure.StorageClient.Tasks.Task`1.ExecuteAndWait() at Microsoft.WindowsAzure.StorageClient.CloudBlob.DownloadToStream(Stream target, BlobRequestOptions options) at Microsoft.WindowsAzure.Diagnostics.ControlChannel.<>c__DisplayClass10.<ConfigMonitoringPoll>b__f() at Microsoft.WindowsAzure.Diagnostics.ControlChannel.TryExpectError(HttpStatusCode status, Action act) at Microsoft.WindowsAzure.Diagnostics.ControlChannel.ConfigMonitoringPoll(Object sender, ElapsedEventArgs args); TraceSource 'WaWebHost.exe' event
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.WindowsAzure.ServiceRuntime;
namespace MyProject.Web
{
public class WebRole : RoleEntryPoint
{
public override bool OnStart()
{
AzureDiagnostics.InitializeAzureDiagnostics();
return base.OnStart();
}
}
}
Adding Diagnostic monitoring to Azure
public static class AzureDiagnostics
{
public static void InitializeAzureDiagnostics()
{
// do not run this code if we're not running in the cloud.
if (!Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.IsAvailable)
return;
// Enabled the capture of partial crash dumps
Microsoft.WindowsAzure.Diagnostics.CrashDumps.EnableCollection(false);
// configure and start the diagnostics
DiagnosticMonitorConfiguration dmc = DiagnosticMonitor.GetDefaultInitialConfiguration();
AddPerformanceCounters(dmc);
AddLogs(dmc);
AddSystemEventLog(dmc);
AddInfrastructureLogs(dmc);
DiagnosticMonitor.Start("DiagnosticsConnectionString", dmc);
}
private static void AddInfrastructureLogs(DiagnosticMonitorConfiguration dmc)
{
dmc.DiagnosticInfrastructureLogs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
dmc.DiagnosticInfrastructureLogs.ScheduledTransferPeriod = TimeSpan.FromMinutes(10.0);
}
private static void AddSystemEventLog(DiagnosticMonitorConfiguration dmc)
{
// Add event collection from the Windows Event Log
dmc.WindowsEventLog.DataSources.Add("System!*");
dmc.WindowsEventLog.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
dmc.WindowsEventLog.ScheduledTransferPeriod = TimeSpan.FromMinutes(10);
}
private static void AddLogs(DiagnosticMonitorConfiguration dmc)
{
dmc.Logs.ScheduledTransferPeriod = TimeSpan.FromMinutes(10);
dmc.Logs.ScheduledTransferLogLevelFilter = LogLevel.Verbose;
}
private static void AddPerformanceCounters(DiagnosticMonitorConfiguration dmc)
{
List<string> counters = new List<string>();
counters.Add(@"\Processor(_Total)\% Processor Time");
counters.Add(@"\Memory\Available Mbytes");
counters.Add(@"\TCPv4\Connections Established");
counters.Add(@"\ASP.NET Applications(__Total__)\Requests/Sec");
// These network interfaces removed - not that interesting for now
//counters.Add(@"\Network Interface(*)\Bytes Received/sec");
//counters.Add(@"\Network Interface(*)\Bytes Sent/sec");
foreach (string counter in counters)
{
PerformanceCounterConfiguration counterConfig = new PerformanceCounterConfiguration();
counterConfig.CounterSpecifier = counter;
counterConfig.SampleRate = TimeSpan.FromSeconds(10);
dmc.PerformanceCounters.DataSources.Add(counterConfig);
}
dmc.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromMinutes(5.0);
}
}
Monday, September 13, 2010
Re: "The "COM0" port did not open." Bada device development
If you're trying to debug a Bada device and you see "The "COM0" port
did not open." under the entry for the Broker.exe in the Bada IDE
Console, then:
1. If it's the first time you've ever tried to connect then check that
you've installed the necessary USB drivers and have the device
attached.
2. If you've previously been using this fine, but this has suddenly
stopped working then try:
--- rebooting your phone
--- killing broker.exe in the PC task manager
--- setting your phone's USB connect to Samsung Kies or to Mass
Storage, and then using Run As rather than Debug As in the IDE
--- hit the task manager on the phone and choose "End All Applications"
I'm not entirely sure what worked for me... but I think it was a
combination of the last few in the end!
Saturday, August 21, 2010
Setting up a Samsung Wave (Bada) for debugging
Wednesday, August 18, 2010
View Stored Procedure Source Code
in SQL Server Management Studio) then use:
EXEC sp_HelpText 'your procedure name'
Sunday, July 11, 2010
A problem with "The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF"
The server committed a protocol violation. Section=ResponseHeader Detail=CR must be followed by LF
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>