New open source project: Send calendar invites from within SQL Server

Looking for a way to send calendar event invitations from within SQL Server?

Did you try that one hack where you use sp_send_dbmail to generate an ics attachment file, and then found that it’s still not being identified as a calendar event in the e-mail program?

Then fret no more, my friends, because I’ve been there, and out of sheer desperation of not being able to find a properly working solution, I’ve decided to build one myself. And now it’s available for your wide consumption as an open source project!

Continue reading “New open source project: Send calendar invites from within SQL Server”

Import GitHub Issues from Trello Cards using Powershell

I know this has little to do with SQL Server (and therefore, not quite like me to post this), but it’s a nifty little script in Powershell which I’ve been working on recently, and I believe other people may find use for it as well (someone, somewhere, maybe?).

This script basically takes a Trello JSON file (created using their Export feature), connects to a GitHub repository, and creates one GitHub issue per each Trello card. Any labels are copied over, any checklists in the Trello card will be added into the issue body as checklists, and any attachments in the Trello card will be added into the issue body as an unordered list of links. Finally, at the bottom of the issue’s body there would be a link back to the original Trello card.

Continue reading “Import GitHub Issues from Trello Cards using Powershell”

Using SUBSTRING based on line number instead of character offset

Suppose we’re running one or more dynamic SQL commands in SQL Server, and we’re getting an error from somewhere within it.

But, to make things interesting, let’s suppose that we’re running a large number of such dynamic SQL commands within a loop, each constructed a bit differently, and we’re finding it difficult to pinpoint which of the dynamic commands is causing the error, and which SQL statement it is exactly.

Could we, perhaps, print the relevant code section based on the error line reported in the CATCH block? Continue reading Using SUBSTRING based on line number instead of character offset

Business Data Monitoring with Zabbix – Easily Done

In this article, we will show you how we implemented a little system to create generic business data based alerts, and show them on Zabbix when needed.

In the first part, Snir will focus on the generic process that will deliver the data you want to Zabbix in case of a problem, and Eitan will explain the steps that need to be taken on the database end of things. Continue reading Business Data Monitoring with Zabbix – Easily Done

How to Update @@SERVERNAME to Actual Machine Name?

If, for whatever reason, the Windows Computer Name is changed after SQL Server is already installed, then @@SERVERNAME and the information in sys.servers would not automatically reflect the change (sysservers in older SQL versions).

This means that @@SERVERNAME contains the incorrect value for the machine name.

Sometimes, and especially in production environments, the value in that global variable is important and is used as part of business processes.

And if @@SERVERNAME doesn’t reflect the actual server name, it could cause problems.

Alternatively, it’s possible (and maybe even best) to use the SERVERPROPERTY function instead to get the actual server name, or machine name, or instance name. The information available through this function should be up-to-date even after you rename the Windows Computer Name. Continue reading How to Update @@SERVERNAME to Actual Machine Name?

Automatically Enable or Disable Jobs Based on HADR Role

Imagine the following: You have a couple or more SQL Servers with some sort of High Availability solution between them (AlwaysOn Availability Groups, Database Mirroring, etc.). You also have a bunch of scheduled jobs which you need to be run on the Primary server.

But wait…. How would you make these jobs run only on the Primary server? After all, if they try to run on the Secondary, they would fail (whether because the database is inaccessible or because it’s read-only). Additionally, you would need to consider the possibility of a failover where the Primary and Secondary servers would switch roles.

This means that you would have to, first, create these jobs on both servers, and implement some sort of mechanism that would detect, for each job, whether the instance it’s being executed at is currently the Primary.

There are a few ways to go about doing this.

[For the sake of this article, let’s ignore the fact that most people don’t even think about it, and leave all of their important jobs on the Primary server only, while ignoring the risks of what would happen when their Primary server crashes and fails over to the Secondary] Continue reading Automatically Enable or Disable Jobs Based on HADR Role