Getting Reviewed.

The good news in my world is my software, BookSmarts, was reviewed. I didn’t really know it happened, but Softpedia reviewed it.

To tell you the truth, this sort of thing can be nerve-racking especially if you know ahead of time that they are going to review your work. In my case, I’ve been working on it for the past two years. The surprise moment when you see a review of your work makes time stand still and your heart starts beating harder.

When someone is working on something for two years without seeing a dime, it becomes their baby. I am now sure I know what the mother’s on Toddlers & Tiaras are experiencing. You have got this thing out there for the world to see, your baby, and people are criticizing or praising it. Trust me, as a parent, no one ever likes it if you call their baby ugly. Go ahead, I dare you to say that to a mom you know, see how it goes. You probably won’t be able to say that again without a lisp, because she knocked out your front teeth.

Luckily for me, I apparently have pretty baby, it got an excellent first review. It was an affirmation of my time and effort, as well as all those around me who have supported me through this intrepid endeavor. It is a reward, in a sense, for the effort. Yes, it is ultimately making money is proof of success, but this is a nice place to be in on the path to success.

BookSmarts Bookmark Manager Softpedia Rating

HAPPY HOLIDAYS!

MS Access – Remove Source Control

If you are like me, you love source control. I recently discovered you can use source control in Access via a plugin. However if you want to push it out to a client, how do you remove source control? What you do is a compact and repair of the database. It will ask you if you wish to remove source control from the new copy of the database, click yes and your should be good to go.

Powershell – Copyrighting made easy

I recently needed to submit a program I’m working on for a copyright. One of the criteria is the first and last 25 pages of the program need to be submitted. I really didn’t want to go into every source code file and append it to a file manually, I have more important things to do than that. I used my old friend Powershell to get what I needed.

Here is the line:

> ls *.cs -recurse | ?{-not ($_.fullname -match “obj”) -and -not ($_.fullname -match “properties”)} | Get-Content > sourcecode.txt

What this is doing is grabbing all of my C# code from my solution (excluding code in the obj and properties folders) and dumping it to a text file.

From there I was able to upload one file.

Finding All The Logins Not Associated to Database Users

Today I ran into a particular issue, consolidating user accounts. In this particular exercise, I needed to remove old user accounts that were not tied to any databases. Here is a neat trick I did to get a reasonable number of logins to look at for disabling.

CREATE TABLE ##names (NAME SYSNAME);
EXEC sp_msforeachdb ‘insert into ##names (name) select name from [?].sys.sysusers';

SELECT name,
loginname
FROM sys.syslogins l
WHERE NOT EXISTS ( SELECT *
FROM ##names u
WHERE u.name=l.name )

Using the unsupported sp_msforeachdb stored procedure I could dump all the usernames into a table and compare it to the logins. Simple, quick, dirty…But saved a lot of time!

Remotely connecting to SQL Server 2008 Integration Services – Access is denied error.

Very annoying error and I haven’t seen clear concise instructions for getting this to work. I will attempt to do that here.

  1. Open Administrative Tools > Component Services
  2. Navigate to DCOM Config and open the properties for MsDtsServer100
  3. Click on the Security tab
  4. Add the appropriate users/groups that you need and assign their permissions to BOTH “Launch and Activation Permissions” AND “Access Permisions” (Both of whom, select Customize then Edit)
  5. Click Ok to save changes and close those windows.
  6. Right click on Computer, select Manage.
  7. Navigate to System Tools > Local Users and Groups > Groups
  8. Double click on Distributed COM Users
  9. Add the users/groups you wanted to give permissions to.

Parenting Hack – Feeding a child who refuses to eat

Being the parent of a child in the terrible 2’s can be a daunting task; they are expressing the individuality and are testing the boundaries. My daughter was refusing to eat, it was just an act of defiance.

I then remembered something from the book the Art of War, take the middle ground. If she won’t eat food, maybe I could get her to just hold the food. Obviously, it should be something easy for a 2 year old to hold. In this case I used pancakes. I told her to help daddy by holding a pancake for me.

In a minute, she ate the pancake. I asked her to hold another one for me, and wouldn’t you know that she ate that one too!

So I hope this helps to feed your defiant 2 year old as well!

SQL Server Database Corruption

I’m currently studying for the 70-450 exam to obtain my MCITP in SQL Server Database Administration. I wanted to get a better understanding for SQL Server’s transaction log. I wanted to see if I could corrupt a databases MDF and recover data even after the last t-log backup. This is where the tail backup comes in.

The tail log backup can recover your data even if the MDF is corrupted. This is because it stores all the transactions since the last full backup and t-log backup. If the MDF is corrupted your t-log should still be ableĀ  to be backed up, unless that is corrupted too. If the database is not truly corrupt, a backup log statement with the norecovery option will work just fine. This puts your database into recovery mode and prevents users from going into the database, preserving the state of the database so the restoration can be performed.

Unfortunately this does not work when the database is corrupted. You have to use the option continue_after_error, this forces the backup to occur.

You can then restore all data back to the database using your full and t-log backups.

Immediately after bringing the database online, be sure to make a full backup. This way you have a good restore point and if you routinely are backing up your t-logs, your next transactional backup will work just fine.