I think it's probably one of the nicest Saturday's of the year so far, but I thought it would be more fun to uninstall our Trial edition of TFS 2008 and install the work edition. Here are the steps I took: - Using Windows Firewall block access to TFS and Sharepoint
- Backup all databases to another server
- Take a VMWare snapshot
- Uninstall TFS 2008
- Uninstall TFS Build 2008 ( I don't think this was necessary)
- Install TFS 2008 Workgroup **
- Install TFS 2008 Build
- Test Locally
- Remove firewall restrictions
- Test Remotely
- Remove snapsot
Things were going smoothly until I was installing TFS Workgroup, and during the database upgrade (not sure why my DBs were different between the Trial and Workgroup Edition) I got an awesome error: Product: Microsoft Visual Studio 2008 Team Foundation Server - ENU -- Error 32000.The Commandline '"E:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Tools\TfsDb.exe" upgrade /server:"YourTFSServerName" /property:"TFS_SERVICE_ACCOUNT=DOMAIN\tfsserviceAccount; TFS_REPORTING_ACCOUNT=Domain\tfsreportsAccount; LCID=1033;VSTF_AS_INSTANCE=YourTFSDBInstance; VSTF_AS_DATABASE=TFSWarehouse;VSTF_AS_ACCOUNT=" /showui:2622014' returned non-zero value: 100. I decided to run the TFSdb tool from the command line, and it gives allot better information. According to the error, I needed to perform a backup log operation on my TfsWorkItemTracking database. So after doing that, that phase of the install process completed. The rest of the install process seemed to take forever, and the progress bar was about 97% to the end and just hung there for a good 3-4 minutes before it finally completed without error.
Don't ask.... - Shutdown your SQL Server service, from the services MMC
- Stop all services and applications from connecting to your SQL server. If they are connecting via the network, you could use the windows firewall to restrict access. The reason for this, is once you are in single user mode, another application may connect and consume the one connection.
- Open a command prompt window and navigate to the location of SqlServr, which should be %Program Files%\Microsoft SQL Server\MSSQL.1\MSSQL\Binn.
- Type sqlservr -m to start SQL server in single user mode
- Open Sql Server Management Studio (SSMS) and connect to your SQL server
- Fix your security
- Go back to the command prompt window and press ctrl+c, and then Y to stop SQL server
- Restart SQL server, and any dependent services (like SQL agent) in the services MMC.
If you have UAC enabled (Vista or Win2k8) you have to run the command prompt, and SSMS as an administrator. Question...does it really matter if you deny local computer and domain administrators access to the SQL server, if any local administrator can restart SQL server in single user mode? The reason I ask, is there are a lot of "Best Practices" that say you should deny access to normal computer administrators. I've even heard that in some industries and sectors such as legal, healthcare, etc, you have to restrict who has access to the data. Maybe it's just a you need to make a good effort.
So I have been continuing on my new assignment of setting up servers for our new infrastructure, and it's somewhat boring and repetitive after the first one. I was hoping to knock out the last 3 SQL servers today, but I couldn't get our schedule maintenance plans to run. I kept getting an error stating that "The owner (Domain\User) of job <Job Name> does not have server access." Well, I am the owner, and I have SysAdmin permissions, and I am the one who created the jobs, so what could it be? Originally I had imported the maintenance plans from a file share that I had exported the maintenance plans from a non-member server, and then imported those maintenance plans into two other servers. I tried creating a new job on one of the servers, thinking that was something wrong with the import process, but nope, I get the same error on all three servers. Another member server, configured exactly same, just setup the day before, works fine, with my account as the job owner. Off to Google I go. I found some references to the error, but allot of them were for a KB article relating to SQL 2000, and it had a service pack fix. I did find a command ( exec xp_logininfo 'username' ), which is supposed to help you verify if your account is setup correctly, and apparently mine is not. I get an empty result set on the 3 servers I am having problems with, and one row with the correct information on the working server. I was actually happy to see the empty row set on the three non-working servers, as now I can search on exec xp_logininfo instead of the error I was getting with the job, to hopefully find a solution to my problem. Unfortunatly, I didn't get many hits that applied to my situation. Running the xp_loginfo on both the working and non-working servers yielded some interesting information. I decided to add a domain group that my account belonged to, to both a working and non-working server. Re-running the xp_logininfo showed 1 row on the non-working server, and 2 rows on the working server. The permission path column on the working server showed null for the first row (which was present before adding the group), and the 2nd row shows the group I just added (which is the same as the non-working server after adding the group). Somehow, the one working server has some extra permission set somewhere. I think this may be because I might have manually added my domain account on the working server, but I let a MS tool that auto-runs after SQL SP2 add my account. Sure enough, adding my domain account manually fixed the original problem, and the results of the xp_logininfo now match between all servers.
I've been working on setting up servers the past week, and will be continuing for the rest of may. Included in that are BizTalk and SQL servers. Part of our setup procedure is to document everything so that we have consistency between servers. It's boring and tedious but necessary. While looking up some info on DB Mail in SQL 2005, I came across a good post by Brent Ozar on some post install steps. It covered a few things I hadn't thought about, but have since added to our build documentation. Brent's post also had links to the SQL 2005 Dashboard Performance Reports. One of the links was to an excellent write up of the installation and use of the reports by Brad McGehee.
Today I downloaded and installed the Sql Server 2005 Express Advanced edition for a test project I was working on. I needed to enable remote connections, so I when to the surface area configuration wizard and enabled remote connections thru tcp, and I opened port 1433 on the computer's firewall. However, I could not connect. Running a netstat -an showed nothing listening on port 1433. Doing some searching I found an outdated post on the sql express blog that helped me fix the problem. - Open Sql Server Configuration Manager
- Expand Protocols for SQLEXpress under SqlServer 2005 Network Configuration and click on Tcp/Ip
- On the IP Addresses tab, scroll to find the IpAny entry.
- Clear out the field for dynamic ports and put in 1433 for the TCP Port
- Restart SQL Server.
The reason you have to do this, is by default the SqlBrowser service (port 1434) is not running by default. When clients try to connect, they must know the port to connect to. The default sql port is 1433, so once we have that setup, even if the SqlBrowser service is not running, or is blocked by the firewall, we can still connect.
Over the last couple of weeks I've been in the process of rebuilding my primary workstation at home, installing server 2008, hyper-v, creating VM's, etc. I finally got around to importing my RSS feed list and found plenty to catch up on. This post is basically just a series of links to posts that I've missed over the past couple of weeks. - Asp.Net MVC Source Refresh posted by ScottGu - The latest source code for the upcoming MVC addition to Asp.Net has been posted on CodePlex. The official preview 3 release is due in a couple of weeks and will provide a "hassle-free" installation. Scott points out that the unit tests for the MVC project have been released, and that they are using MSTest (no surprise there) and Moq, an open source mocking framework.
- Hanselminutes 109 Dynamic Data - Scott interviews Scott Hunter, Sr Program Manager @ Microsoft about the Asp.Net dynamic data project. The most important thing I took away from this pod cast was that Dynamic Data is not a tool to create prototype web sites or scafolding. This was just the first demo, and unfortunately it has left some negative impressions.
- Building a HTPC posted by Jeff - This is an amazing post showing how cheap you can build a kick ass HTPC using the new AMD 780G platform. The 780G has a ATI HD3200 chipset which supports HDCP and decoding of blu-ray. I may just look to sell my old AMD Operton 165 parts to finance a HTPC running on the 780G platform. I decided to order the Kill-A-Watt power meter recommended by Jeff as well to see how much it's costing me to run 3 folding instances on my new box ;)
- NET Micro Framework vs. Microsoft Robotics Studio, Introduction to Port-Based Asynchronous Messaging, Phidgets Robotics Programming in C# posted by Dan Vanderboom - That's three posts from Dan, all of which hit close to home. I've been working with the Phidgets RFID reader for almost a year now and taking advantage of Robotics Studio on the Compact Framework sounds vary promising.
Last week I ran into an issue where I needed to boot into DOS in order to update some firmware on our servers. Problem was, the servers didn't have a floppy drive, but they did have USB and CD-Rom. I had a bootable CD-Rom in the form of the Ultimate Boot CD (UBCD), which has a batch file included for turning a USB memory stick into a bootable device, complete with the contents for the UBCD. A USB memory stick is allot easier to carrier around then a CD. In fact, I keep a 2GB USB memory stick on my key chain, and the UBCD only takes up ~120MB. The only downside is the UBCD contents are stored on the root of the USB drive. I keep things clean by creating a folder named _files in the root, which is where I stick all of my files, and this seems to work. I also wanted to add DSL, as it can be booted, or run from inside windows. Installation - UBCD Obtain a USB drive/stick. I picked up a 2GB San Disk Cruzer for $17 on sale at best buy. It comes with something called U3, which thankfully you can uninstall by using a program you can download from here. You have to go thru a bunch of marketing screens telling you how cool U3 is. Next Download the ultimate boot cd and burn it to a CD. You could probably also mount it using a mounting tool but I did not try this. Use the ubcd2usb.bat file located in tools\ubcd2usb to format your usb drive, make it bootable and install the contents of the UBCD to it. I've run into a couple of problems on this step. First, it seems to fail under Vista, but I only had one USB stick left to format at the time. It works fine on WinXP and Win2k3. For the SanDisk U3 stick, I formatted it first from the command prompt after removing the U3 software and this seems to have helped it. I think it may have gotten corrupted when I tried using Vista after removing the U3. A co-worker of mine has the exact same USB stick, but I know he used XP and had no problems Install DSL The following instructions are based on this forum post which was written for DSL 3.2. My instructions work with the latest version (4.x) and allow you to boot from your USB drive using Qemu, or boot into DSL when your computer boots up. First download the latest version of DSL. I used this link (Check the DSL download page for a list of current mirrors), which is for the embedded version (zip file, not an .iso). Then I extracted the contents of the .zip file to a temporary folder (c:\temp\dsl) and created a folder on the root of my USB drive called DSL (\DSL). Copy KNOPPIX to the root of your USB drive, then copy the all of the extracted DSL contents except KNOPPIX to /custom/DSL. Edit the .bat files in /custom/dsl updating the path to KNOPPIX as /KNOPPIX. Finally edit \custom\custom.cfg with a text editor adding a label for choosing DSL. Your custom.cfg might look something like this: MENU INCLUDE /menus/defaults.cfg LABEL back MENU LABEL .. KERNEL menu.c32 APPEND /menus/main.cfg LABEL dsl MENU LABEL DSL V4.2 KERNEL /custom/dsl/linux24 APPEND ramdisk_size=100000 init=/etc/init lang=us apm=power-off vga=791 initrd=/custom/dsl/minirt24.gz nomce noapic quiet BOOT_IMAGE=knoppix You should now be able to boot DSL from the Qemu emlator by using the bat files in /custom/dsl, or boot DSL from the UBCD menu (Custom Tools\DSL 4.2). I could not figure out how to get DSL to boot thru UBCD with KNOPPIX in the DSL folder, only with it in the root of the USB drive. A minor inconvenience. Final Thoughts I decided to remove the autorun.inf and website folder which was installed from UBCD. I was going to remove the tools folder, but then realized that by keeping those on there, I could easily create this same setup on other USB sticks for friends. A similar utility disk is the Ultimate Boot CD for Windows (UBCD4Win). The application you download from the UBCD4Win takes files from a WinXP (SP2 recommended) disk, and creates a bootable CD with utility applications. However, it sounds like you are limited to booting computers which have a similar version of Windows (XP, Server 2003), especially for the NTFS utilities.
Scott blogged about mutli-core builds using MSBuild from the command line, as well as a "hack" from within Visual Studio. I followed the instructions as outlined in the 2nd post and it seems to work for the most part. The solution I was trying it on was fairly small and contained a mix of Compact (CF) and Full (FF) framework projects which seem to cause some issues. As pointed out in the 2nd post, you are not going to see much advantage to multi-core builds for small projects. I will probably revisit this when my project gets allot larger, as well as look into build configurations and targets (custom MSBuild Files) for my CF/FF project mix.
So after running WinXP as a VM under Hyper-V as my primary day to day machine for development, office applications, etc, I have decided to move to a Windows Server 2003 VM. My reasons for this are: - Integration Services (Hyper-V's VM-Ware Tools equivalent) are supported under Windows Server 2003 SP2, where as you need SP3 of Windows XP, which is still in RC.
- Hyper-V supports 2 way SMP (more then 1 virtual processor) under Windows Server 2003. I feel that a 2nd virtual processor will make things allot more responsive.
- Server 2003 has less "stuff" turned on out of the box, and uses less ram. After a clean install, I have 89 MB of ram in use.
- I do not need any of the new features of Server 2008, such as 4 way SMP support under Hyper-V, DirectX 10, etc. The one thing that might be nice would be IIS 7 for development, but I would be looking at setting up a dedicated VM running SQL 2005/2008 and IIS 7 at that point. My immediate home development tasks will be focused on non-web applications (I think).
Even with only a single virtual processor installed and no integration services installed, the VM felt more responsive, and adding a second virtual processor and integration services has only increased this feeling. I set an 80% CPU resource constraint which corresponds to 40% of my systems overall CPU processing power. I have no technical reasoning for this other then 2 virtual CPU's at 80% should be more then sufficient for my needs, while keeping the overall system responsive, and allow for some other VM's if need be. As part of my burn in process on my new machine, as well as something I do every day, I run Folding@Home. Usually I run with 3 folding instances, which leaves one of my four cores available for actual work. I've noticed when I'm actively using the XP VM and have 3 instances of folding running, that things seem sluggish at best. With my new Windows 2003 VM and three folding instances running, the system is more responsive. I do not know why this might be (maybe the resource constraint I added?), nor have I done any type of benchmarking other then looking at Task Manager, but I'll take what I can get. If I run into any gotcha's, I will post a follow-up, but I don't think I will. I've used Windows Server 2003 as a workstation before so I am very confident that I won't run into any type of application compatibility problems.
I attended the Hero's Happen Here launch event held in Madison, WI yesterday. The event was held at the Westside Marriott, and featured a morning and afternoon session, each with multiple tracks. Future planning note, the local McDonald's was not prepared for the rush between the two sessions ;) I was registered for the IT Infrastructure track in the morning session (I think), but it didn't really matter. Once you got in, you could float between tracks, and I ended up standing on the back wall for a couple of the presentations so I could move more freely and answer phone calls (my on call week). I'll start off with the free stuff I got. - Microsoft branded lunch cooler - These were given away for the morning session and actually had food in them! They are really nice lunch coolers, with a main compartment with a separated top and bottom (bottom is for your ice pack and really cold stuff).
- Visual Studio 2008 T-Shirt - I got this from AngelaB because I made a comment while visiting the booth she was at. I said something to the effect that I was looking to learn how to leverage the power of Team Foundation Server to manage the complete application development life cycle.
- Training DVD's - Also from the VSTS booth, I picked up two training dvd's. One on web deign and development (SilverLight, windows live, etc) and the other one was on WPF.
- Software Bundle which included VS 2008 standard edition, Windows Server 2008 enterprise 1 year eval, and SQL Server November CTP. Also included was trial editions of Microsoft Forefront, Microsoft System Center and a Windows Mobile 6 developers resource kit. Finally I picked up my 4th copy of Vista, this being a 32 bit Ultimate version with SP1.
Now onto the actual content. As I mentioned above, I kind of floated between tracks, so my notes jump around a bit. SQL 2008 - New built in auditing mechanism
- No more need to write triggers and manage audit tables
- Granular auditing
- Write events to various sources including the event log. The event log source was highlighted because Server 2008 has a new feature where you can gather all event log data from all of your servers and view
- Peer to Peer replication
- New visual representation
- No longer need to start/stop databases (or servers? I missed the last part of this comment).
- Compression
- Two types of compression, backup and data.
- Backup compression enables faster backup and restore times and smaller backup files. A 2x to 7x reduction in backup size was reported, but it varies on your actual data.
- Data compression allows you to compress the data within your databases (including OLAP) taking up less space on disk, and in memory (allowing you to fit more pages into RAM), at a slight increase in CPU utilization (presenter said 2-3%). While I will need to evaluate this in various environments, it seems like a good tradeoff, as disk IO is usually the biggest bottle neck.
- SQL Server is still in CTP, and the Presenter was unsure which compression options would be available in which editions of SQL 2008.
- Resource pools and the Resource Governor
- Assign users (and it sounds like you can assign or configure this at a stored procedure level as well) to roles and then assign the roles to resource pools. The resource governor will limit, or assign a certain amount of CPU cycles to each pool.
- A typical usage of this is making sure your production applications get the CPU they need, even when someone is running a resource intensive reporting operation.
- New OLAP query optimizer
- Define policies (presenter compared this to GPO, or rather that's where the idea came from) which manage your SQL server, and then apply those policies to all SQL servers in your organization
- Performance improvements in database mirroring, along with automatic page repair.
- SQL Management studio now adds intellisense, but it's only for select statements. Several people complained upon hearing the limitation on select statements, but something is better then nothing, and you can always go by Sql Prompt from RedGate.
Follow-up questions - What is the differences between clustering, mirroring, log shipping and peer to peer replication?
- With all this talk about server vitalization, what are best practices for maintaining high performance in a virtualized environment.
Virtualization - Next version of Virtual Machine manager for System Center will be able to control virtual machines from MS Virtual Server 2005, Hyper-V and VMWare
- Hyper-V actually virtualizes the host OS. This is what is meant by the whole Parent partition terminology I guess. The presenter made it a point to show how after he enabled Hyper-V, he no longer had power management options on his laptop. So what does a virtualized host really mean? I'm still able to play games (World of Warcraft, Call of Duty 4) on my Hyper-V enabled Windows Server 2008 workstation, so it's not the same thing as a virtual machine that's for sure.
- The import/export feature in the Hyper-V manager is for moving VM's between hosts, not for importing VMware from Virtual Server 2005. To do an import from Virtual Server, you just create a new VM in Hyper-V, add the disk file from Virtual Server, and install new drivers.
- There is a differencing disk option I overlooked on my install, which allows you to setup a master disk, allowing you to save on space.
- You can setup virtual com ports to talk to the host computer, or remote computers via named pipes. I just setup both com ports on one VM to use the same named pipe, and was able to send data back and forth using two hyper terminal windows. That will come in handy for some testing I have to do. Note, this option is not unique to Hyper-V, but I thought it was worth pointing out.
- Backups of running VM's are supported (Live Backups)
Two things I wanted to touch on quick concerning Hyper-V, specifically live backups, and mounting VHD's in the host (a feature that has been posted on more then one blog). To backup a running VM, it takes a little more then just an XCopy. Most people have stated that you have to backup the entire volume in order to backup a running VM properly. I found this post that provides an example of using a script to select the Hyper-V VSS writer and hopefully not have to back up the entire volume, but I haven't tried this yet. Since none of my VM's are 24/7 critical, it might be easier to just shut them down once a week and use the export function. On the topic of VHD mounting, I found another post which provides a script to add context menu support for mounting VHD's on the host machine. The VHD must be not be in use, otherwise you will get an error. Server 2008 Security - Server and Domain isolation using network access protection
- Create zones, such as unsecured (customer laptop plugged into your corporate lan), secured (most company desktops and servers), and sensitive (source code servers, production databases), and policies on which computers can access each zone.
- DHCP and Certificate based, with DHCP easier to setup, but not as secure as Certificate based.
- You can define policies which classify what zone a computer belongs in. For example, your policy can check for AV, anti-spyware, etc.
- Rights Management Service, allows you to attach authorization to a document and limit what you can do with it, such as email it to an external email address or use the print screen feature. Of course you could still take a picture of your monitor with an actual camera (as pointed out by the presenter).
- Granular Active Directory Auditing will allow you to edit very specific details such as when a computer is moved from one OU to another, or a specific field in a users AD record is changed
VS 2008 The CSS support shown in the demo was very nice. The demo had a plain old web page with some basic formatting, to which the presenter did a drag and drop operation of some CSS styles he had download from CSS Zen Garden. The page in the designer was updated automatically and completely transformed the look and feel of the page. There is a view which shows what styles are applied to what page elements, and how styles are inherited. It really seems like VS 2008 makes CSS a whole lot easier to work with. There are obviously allot of new features in VS 2008, but I've been using it since beta 2, so the rest of the stuff presented (mostly linq) was review to me and I didn't write it down. The presenter's blog is up at BenkoTips.com and is supposed to have more videos and demos on VS 2008. Office Development - Outlook web forms allow for you to create an application easily within the confines of outlook.
- Sharepoint workflows are just WF workflows. New features in VS 2008 allow you to deploy directly from VS 2008 making this once painful operation much easier. I am not sure if custom work flows are available in WSS, or just MOSS
- MOSS has a business data catalog feature which allows you to pull together data from various sources, like ERP, CRM, etc.
|