Google Chrome is starting to lose popularity.

browsersAre you using more than one browser to surf the web? If you are, you are not alone, according to market research the number is rising. Why? Some websites simply perform better on one browser than the others. No one browser is a clear winner on every website.

The reason being is software developers design and test websites more with the browser they prefer. This results in less thorough optimization with other browsers. Some websites just simply will not work on all browsers.

The result is having to remember which site works best on a particular browser, this can cause pain (just like trying to remember all of your passwords). Why do this to yourself?

The solution is to have a smart application do it for you with a minimum effort. BookSmarts imports your favorites and bookmarks from the browsers you use, and remembers to which browser they belong.

Just remember, it’s okay to use more than one browser.

booksmarts

Take a look at some of these statistics.

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.

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.