Microsoft Teams Video Call Background Folder
If you want to upload your own background for Teams meetings this is the location
%APPDATA%\Microsoft\Teams\Backgrounds
If you want to upload your own background for Teams meetings this is the location
%APPDATA%\Microsoft\Teams\Backgrounds
If you need to prevent changes to your SQL Server Schema, or at least monitor them, then this post is worth reading
I needed to monitor/control changes made to SQL server databases at server instance level. There are plenty of ways of doing this but there is nothing as simple as a DDL level trigger. It’s clean, can be disabled quickly for rapid change implementation and its a central location which means deploying to sever SQL Servers or a server farm is that much easier.
So the basic requirements
1. We must be able to monitor CREATE,DROP and ALTER on Tables, Views, Stored Procedures, Triggers and Functions
2. We must be able to filter based on user, applying the rule or not
3. We must have a log of each schema change regardless of success or failure
4. We need to send an email when a change has been attempted and was disallowed
So how are we going to do this. Well we can use the ROLLBACK inside our trigger to prevent the changes from occurring, and we can use the RAISERROR to display the appropriate message we want to user/program to receive when the attempt fails. We can also take advantage of the code SQL Server query execution sequence such that after a rollback has been called in a trigger, the parent transaction has been dumped, but any further transactions will continue to be executed and committed. See here http://msdn.microsoft.com/en-us/library/ms187844(v=sql.105).aspx
Some Key fundamentals we are going to be using
First off the
1 |
CREATE TRIGGER [TriggerName] ON ALL SERVER |
, this will allow us to create the trigger at server level, so it affects all databases. It will hence be located in the Server Objects >> Triggers within SQL Server Management Studio
Next comes
1 |
EventData() |
which contains all the details we want about what is changing and who is trying to change it
We will be using “
1 |
SYSTEM_USER |
” to identify the current logged in connection that is behind the event and also filter on this to make a decision to reject or approve the change.
Finally we use the
1 |
ROLLBACK |
and
1 |
RAISERROR |
commands to initiate a rejection of the event, followed with our logging insert and in my case an email send method, I won’t get into the details of the mail sending in this article, however its worth mentioning that I have a fully fledged SSIS package driven mail sending engine integrated with MS Exchange, its possible to send from any mailbox to any mail group or address in the active directory or individual mail address book, you can attach files from the network or from binary within the database, you can send with importance in text format or html as this example demonstrates, Its a very powerful and very handy engine to have in the systems topology, took 3 days to write and about a month to fine tune, suddenly sending mail is very easy from anywhere in your infrastructure. Anyway I digress
Enough background, here’s the Code. You will obviously need to adjust bits to suite your needs before you use this
This should be executed against the master
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
/* IF EXISTS (SELECT * FROM master.sys.server_triggers WHERE parent_class_desc = 'SERVER' AND name = N'ddl_SQL_Server_Schema_Lock') DROP TRIGGER [ddl_SQL_Server_Schema_Lock] ON ALL SERVER; */ CREATE TRIGGER [ddl_SQL_Server_Schema_Lock] ON ALL SERVER FOR ALTER_PROCEDURE, DROP_PROCEDURE, ALTER_TABLE, DROP_TABLE, ALTER_FUNCTION, DROP_FUNCTION, ALTER_INDEX, DROP_INDEX, ALTER_VIEW, DROP_VIEW, ALTER_TRIGGER, DROP_TRIGGER AS BEGIN /*Record the change and who made it, we must do this before our ROLLBACK otherwise we lose access to the EventData*/ DECLARE @EventData XML, @DatabaseName varchar(800), @Schema SYSNAME, @Object SYSNAME, @EventType SYSNAME, @SQL VARCHAR(max) SET @EventData = EventData() SET @DatabaseName = '' + @EventData.value('data(/EVENT_INSTANCE/DatabaseName)[1]', 'VARCHAR(50)') SET @Schema = @EventData.value('data(/EVENT_INSTANCE/SchemaName)[1]', 'VARCHAR(50)') SET @Object = @EventData.value('data(/EVENT_INSTANCE/ObjectName)[1]', 'VARCHAR(50)') SET @EventType = @EventData.value('data(/EVENT_INSTANCE/EventType)[1]', 'VARCHAR(50)') SET @SQL = @EventData.value('data(/EVENT_INSTANCE/TSQLCommand/CommandText)[1]', 'VARCHAR(max)') /*Check user before allowing changes*/ DECLARE @Msg varchar(MAX),@Blocked bit=0; IF (SELECT count(*) WHERE SYSTEM_USER IN ('NT AUTHORITY\SYSTEM','Domain\AllowUserName')) = 0 BEGIN SET @Msg = 'Direct changes to LIVE are prohibited, Changes made to LIVE need to go through the roll out process'; SET @Blocked = 1 ROLLBACK; RAISERROR (@Msg,16,1); --print @Msg; --print'blocked' END --Continue to log this event to our logging table INSERT INTO [SFCLWareHouse].dbo.SQL_Server_SchemaAudit (AuditDate, UserName, DataBaseName, [Event], [Schema], Object, TSQL, [XMLEventData],Blocked) SELECT GetDate(), SYSTEM_USER,--@EventData.value('data(/EVENT_INSTANCE/UserName)[1]', 'SYSNAME') @DatabaseName, @EventType, @Schema, @Object, @SQL, @EventData, @Blocked /*Notify of blocked changes if the event was not allowed*/ IF @Blocked = 1 BEGIN DECLARE @MailID int, @HTMLBody varchar(max) SET @HTMLBody ='An attempt has been made at changing the SQL Schema for sqlprod.swisscantouk.local <br><br>' + '<TABLE style="border:none"><TD>Time:</TD><TD>' + CAST(GETDATE() as varchar(MAX)) + '</TD></TR>' + '<TD>User:</TD><TD>' + SYSTEM_USER + '</TD></TR>' + '<TD>Database:</TD><TD>' + @DatabaseName + '</TD></TR>' + '<TD>Event:</TD><TD>' + @EventType + '</TD></TR>' + '<TD>ObjectName:</TD><TD>' + @Object + '</TD></TR>' + '<TD>TSQL:</TD><TD>' + @SQL + '</TD></TR>' EXECUTE [DataWareHouse].[dbo].[Mail_INSERT] @MailID = @MailID OUTPUT ,@To = 'monitoredmailbox@domain.com' ,@Subject = 'SQL Prod Schema change attmept' ,@BodyHTML = @HTMLBody ,@Importance = 1 END END |
This is the midi mapping I created for the Numark dj2go
I’ve mapped all the essential controls to the best Traktor controls possible bar the folder navigation jog and the back and enter key.
I couldn’t find a map anywhere online, though I did see many posts discussing mapping to deck C and D. This mapping has mapped to Deck A and B
[UPDATE] : the sync buttons were mapped but were not correctly set, I have changed them from “hold” to “toggle” so the sync is toggled on and off.
Traktor Midi Map for DJ2GO.tsi
[UPDATE]: Numark have released their version of the midi map here http://www.numark.com/company/media2.php?id=CTIAMwU0U2IBZAdsA2c%3D
People have been complaining about it though – so i might blend the two together.
We officially started holding hands with our longest trusted allies in 1858, great article from wired.
http://www.wired.co.uk/news/archive/2011-01/18/transatlantic-cables
Recently my htc widgets have not been available for my home screen (friend stream, mail music, twitter etc) Im not sure what caused it but none the less its happened.
To get them back is pretty simple.
Note: this will completely reset your home screen layouts and wipe any saved layouts
1. Make sure you have over 15mb free space2. Open Settings
3. Select Applications
4. Select Manage Applications5. Scroll to HTC Sense and select it
6. Hit Clear data
7. Press the home button and wait
8. You will now see your widgets available when trying to add via one of the home screens
Google has released a pretty cool plugin for its chrome browser call chrome to phone
The idea is to be able to push things to your phone on the fly. Things like navigation directions can be worked out in the browser then sent to the phone, this kick-starts the navigation on the phone and away you go.
The url of page can also be sent, or a phone number currently highlighted.
You can even highlight text which when sent will hit your clipboard.
The gap between pc’s and mobile devices is forever decreasing. I wonder where we will be in 10 years….
The plugin also extends to firefox
google chrome plugin https://chrome.google.com/extensions/detail/oadboiipflhobonjjffjbfekfjcgkhco
the app for your android http://code.google.com/p/chrometophone/downloads/detail?name=Getting%20Chrome%20to%20Phone.txt&can=2&q=
Food for thought
The mobile era is upon us
http://www.mocom2020.com/
heres another interesting video to think about