Firefox-tillägg som fixar länkar

Matts Cutts ville kunna skapa länkar av alla de sidor han hade öppna i en Firefox-session. Det har jag också tänkt på att det vore väldigt smidigt. Perfekt att kunna skapa länkar till ett blogginlägg eller forumskommentar med andra ord.

Han fick ett tips om CopyAllUrls, och jag som har provat det kan instämma med att det fungerar bra.

MakeLink är ett annat tillägg som skapar länkar av den text man markerar på en sida. Också ett bra verktyg som jag inte provat innan.

By Jesper Lind

SP2 till Windows Server 2003

Techworld skriver om att Service Pack 2 finns att ladda hem för Windows 2003. Det har varit en hel del frågetecken om denna uppgradering och hurvida men behöver avinstallera IE7 först eller inte. Se även IEBlog.

Fortfarande är jag inte helt säker på vad som gäller, men Fredrik Landin skriver om ett vertyg som Microsoft har släppt för att underlätta uppgraderingen. HotfixScanTool finns att ladda hem hos Microsoft och ska alltså hjälpa till att avgöra ifall man behöver avinstallera några komponenter innan man lägger in SP2.

By Jesper Lind

Kopiera data från SQL2000 till SQL2005 med BCP

När jag skrev om hur jag installerade SQL Server Express SP2 berättade jag att det var BCP-verktyget som jag ville ha. Det visade sig vara väldigt användbart även ifall syntaxen är rätt så krånglig att lära sig.

Nu tänkte jag göra en snabb genomgång för några av de kommandon som jag har lyckats använda och även hur jag har kopierat data från SQL Server 2000 till min lokala instans av SQL Server 2005 Express. De flesta av exemplen körs i en cmd-promt.

Exempel på kommandon

Först ett användbart kommando för att se om man kommer åt databaskopplingen.

sqlcmd -Slocalhost\SQLExpress

Sen går vi in på själva bcp-kommandona, en referens för syntaxen finns på MSDN.

Skapa en format fil som bara innehåller databasstruktur och inga data.

bcp MittDatabasNamn.dbo.MinTabell format -c -f"c:\MinFormatfil.txt" -Slocalhost\SQLExpress -T -w

Kopiera en tabell till fil.

bcp MittDatabasNamn.dbo.MinTabell out "c:\Lagringsfil.txt" -Slocalhost\SQLExpress -T -N

För att kopiera data från en fil till tabell används "in" istället för "out", så här:

bcp MittDatabasNamn.dbo.MinTabell in "c:\Lagringsfil.txt" -Slocalhost\SQLExpress -T -N

Kopiera data från SQL 2000 till SQL 2005

Med hjälp av dessa kommandon lyckades jag exportera data från SQL Server 2000 och sedan importera dem till min lokala instans, här kommer stegen jag genomförde.

1. Först skapade jag en textfil lokalt med bcp-kommandot. Denna behövde jag ha som en mall för att klistra in innehållet ur textfilen som kommer från exportdatabasen på SQL 2000. Det gick inte att kopiera denna fil direkt eftersom jag då fick ett fel som sa något som "ett ogiltigt filslutstecken <EOF> påträffades i BCP-datafilen".

2. Jag kunde inte använda bcp från cmd-promten på vår Windows2003-server men hittade en annan lösning för att exportera data till en fil. Ifrån Query Analysern körde jag följande query.

execute master..xp_cmdshell 'bcp MittDatabasNamn.dbo.MinTabell out d:\Lagringsfil.txt -SNamnPåServer -T -w'

3. Sedan kopierade jag innehållet i exportfilen till den lokala fil som skapades i steg 1.

4. Slutligen körde jag bcp-kommandot och mina data fanns på plats.

bcp MittDatabasNamn.dbo.MinTabell in "c:\Lagringsfil.txt" -Slocalhost\SQLExpress -T -N

Här är lite olika referenser som hjälpte mig på vägen.

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1071667&SiteID=1

http://simple-talk.com/sql/database-administration/creating-csv-files-using-bcp...

http://www.issociate.de/board/post/180881/BCP_Format_File.html

http://msdn2.microsoft.com/en-us/library/ms162802.aspx

http://msdn2.microsoft.com/en-us/library/ms191212.aspx

By Jesper Lind

SQL Server Express SP2 - installationen från helvetet

Japp i förrgår hade jag en riktigt jobbig dag. Det började med att insåg att jag hade ett behov av att kopiera tabeller och data från vår produktionsmiljö till min lokala utvecklingsmiljö. Jag exporterade en tabell som textfil från SQL Server 2000 och hämtade hem den till min lokala maskin.

På min laptop har jag bara SQL Server Express 2005 och kunde inte hitta några funktioner för att importera data. Efter lite undersökning visade det sig att det inte finns någon funktion för detta i Management Studio.

Som tur är läste jag Euan Gardens post och i kommentarerna kunde jag läsa något om en DTSWizard som lät som var det jag behövde. Den visade sig bara finnas i SP1 av SQL Server och jag satte igång med installationen.

Det var nu det jobbiga började.. Tyckte att jag hade hittat välskriva och bra instruktioner men hade antagligen missat något viktigt. I slutet krashade det hela ordentligt.

Efter ett antal misslyckade försök kom jag på att det kanske hade släpps ett SP2, och det stämde. Jag laddade ner SP2 här och tänkte att nu ska det väl gå bättre.

Men fortfarande hade jag väldiga problem. Installationen avbröts ständigt i olika lägen. Så här höll jag på i typ 10 timmar och läste om mängder av folk som hade liknade problem.

För mig verkade det som om den gamla installationen av SQL Server var trasig. Något som jag läst kan hända om XPs automatiska rensningsprogram städar bort filerna av misstag. För jag kunde inte ens avinstallera programmet. Läste någonstans om en Hotfix som ska lösa problemet med bortstädade installerare men kan inte hitta den igen.

Jag provade att använda Windows Installer Clean Up för att rensa bort trasiga installerare men vet inte om det var en sån bra ide. Försökte även med "How to uninstall an instance of SQL Server 2005 manually" och hackade mitt register en hel del, men inget hjälpte.

Efter många om och men lyckade jag iaf installera SP2 på en ny databas instans, så nu har jag två stycken. Den gamla SQLExpress (Som är helt paj) och en ny som jag döpte till SQLExpressSP2. Lite jobbigt att jag inte kunde behålla det gamla namnet eftersom jag nu måste ändra på databaskopplingarna i våra Web.config filer.

Nu har jag även börjat kolla på det verktyg som jag var efter och som finns tillgängligt för cmd-promten. Det heter Bcp.exe (DTSWizard i SP1) och kan användas till att importera tabeller från textfiler och tvärtom. Mer info om hur man använder detta kommer senare.

Så avslutningsvis så kan jag rekommendera att du verkligen ser till att följa instruktionerna om du ska installera SP1 eller SP2 till SQL Server Express 2005. Det finns uppenbarligen många fällor att gå i, eftersom rapporteringen av problem har varit så stor. Lita på mig, jag har läst en större del av utbudet.

Nu borde jag egentligen installera om hela XP på min maskin eftersom en hel del av miljön är så trasig. Men det hinner jag tyvärr inte med nu.

By Jesper Lind

Tips hur man designar urler till ASP.NET

Som ni vet väntar vi ivrigt på att IIS7 ska kunna gå att använda i produktions miljö. Där kommer det finns bättre stöd för att "skriva om" urler. De nuvarande alternativen är inte så vidare bra och saknaden av en standardiserad modell är jobbig.

Scott Guthrie ger oss dock några bra knep. En genomgång av de ISAPI-filter finns tillgängliga för IIS6. Även andra trix, bland annat Request.PathInfo som jag inte använt tidigare. Då kan man göra urler som ser ut så här.

http://www.webstore.com/products.aspx/Posters
http://www.webstore.com/products.aspx/DVDs
http://www.webstore.com/products.aspx/CD

Ändelsen ".aspx" är helt onödig och den tillför absolut ingenting för besökarens upplevelse. Okej vi som är utvecklare får snabbt reda på vilken teknik som körs, men hur väsentligt är det?

Ett snyggare och mer lättillgängligt variant skulle vara som i nästa exempel.

http://www.webstore.com/products/Posters
http://www.webstore.com/products/DVDs
http://www.webstore.com/products/CD

Men för att ange en sådan struktur måste man alltså använda ett ASAPI ISAPI-filter. Och det är inte alla webbhotell som erbjuder. Man kan ju givetvis skapa fysiska mappar och lägga en Default.aspx fil i varje. Men det orkar man inte..

By Jesper Lind

Microsoft Live Göteborg MSDN

Microsoft kommer med sin roadshow till Göteborg den 20 mars. Mellan 8:30 och 17:00 i SF Filmstaden Bergakungen. För agenda och övriga orter läs hos Johan Lindfors.

Vi kommer vara på plats och ser fram emot att tal del av presentationen om Longhorn, WPF/E, ASP.NET Ajax och alla andra nyheter.

By Jesper Lind

Lyssna på musik i 3D

http://www.codeodyssey.se/upload/resource/blog/flame.png

Jag har precis gått med i maillistan för Papervision3D - en fri 3Dmotor till flash. Genom denna får jag reda på att Antti Kupila har lekt lite med motorn och fått till något riktigt lovande.

Det handlar om ett på en variant på Apples iTunes-bläddring, där framsidorna på albumen rullar fram över skärmen. Antti kallar sitt demo flame och jag tycker verkligen det är häftigt gjort.

Genom en sökruta kan man ange egna termer och liknande artister laddas in dynamiskt från last.fm.

En bonus är att man även kan lyssna på musik från artisterna när man använder bläddraren. Man klickar på mellanslag för att zooma in. Det var intressant att läsa om att urlerna till mp3-filerna fick rippas från innehållet på last.fm-sajten.

Läs även om Amaznode som vi skrivit tidigare. Det flashdemot hämtar data från Amazon.

By Jesper Lind

Nya versionen av chattklienten Trillian blir flashbaserad

Cerulean Studios ligger bakom chattklienten Trillian som man kan koppla upp mot AIM, ICQ, MSN, Yahoo Messenger, och IRC.

Nu meddelar man att nästa version kommer att vara baserad på Flash-teknik. I skrivade stund finns ingen publik beta men man visar upp en demofilm i sin blogg.

För att logga in och starta klienten går man via en webbläsare. Klienten kommer att kunna komma åt lokala resureser på datorn och även visa en statusikon när man tar emot nya meddelanden.

By Jesper Lind

Kombinerad kolumn i dataset och spara i cacheminne

Har en rutin som hämtar ut olika märken för en e-handelsida. Dessa visas i en DropDownList och fylldes den av en SqlDataReader.

Nu ville jag spara dessa data i ett DataSet och lagra det i Cache-minnet för att spara på dyrbara återtrippar till databasen (SQL Server).

Efter märkena i listan skulle det stå hur många produkter som finns under varje märke, inom paranteser. Därför behövde jag göra en ny kolumn och sätta ihop två värden och lägga till egna tecken.

Inlägget "SubString in an ADO.NET DataSet - (DataColumn Expression)" på CodeBetter.com visar hur man gör en nya kolumn med en SubString och som lägger till tre prickar efteråt.

ds.Tables["Customers"].Columns.Add("ShortCompanyName", typeof(string),"Substring(CompanyName, 1, 10) + '...'");

Med hjälp av började jag förstå hur syntaxen för hur DataColumn.Expression fungerar.

Här är själva kodsnutten som kombinerar två värden och skriver det sista inom paranteser.

dataSet.Tables["ChooseBrand"].Columns.Add("BrandWithCount", typeof(string), "Brand + ' (' + CountOfProducts + ')'");

Här är större del av koden som även visar hur man lägger in ett DataSet i Cache.

private void BindBrand()
{

ddlBrand.Items.Clear();

DataSet ds = LoadBrand();

ddlBrand.DataSource = ds;
ddlBrand.DataSource = ds.Tables[0];
ddlBrand.DataTextField = ds.Tables[0].Columns["BrandWithCount"].ColumnName.ToString();

ddlBrand.DataValueField = ds.Tables[0].Columns["Id"].ColumnName.ToString();
ddlBrand.DataBind();

ListItem titleItem = new ListItem((string)this.GetLocalResourceObject("ChooseBrand"), "0");
ddlBrand.Items.Insert(0,titleItem);

}

protected DataSet LoadBrand()
{
Trace.Write("LoadBrand()");
DataSet dataSet = new DataSet();

string strCacheName = "ChooseBrand";
//Cache.Remove(strCacheName);

//Hämta cachad data om det finns
if (Cache[strCacheName] != null)
{
dataSet = (DataSet)(Cache[strCacheName]);
Trace.Write("//Hämta cachad ChooseBrand");
}
else
{

SqlConnection conn = new SqlConnection(strConn);

string strSQL = "SELECT DISTINCT Brand.Id, Brand.Brand,(SELECT Count(Product.Id) AS CountOfProductId FROM Product WHERE Product.BrandId=Brand.Id) AS CountOfProducts FROM Brand ORDER BY Brand.Brand";

try
{
SqlDataAdapter dataAdapter = new SqlDataAdapter(strSQL, conn);
dataAdapter.Fill(dataSet, "ChooseBrand");
dataAdapter.Dispose();
dataAdapter = null;


//Lägg till custom kolumn
dataSet.Tables["ChooseBrand"].Columns.Add("BrandWithCount", typeof(string), "Brand + ' (' + CountOfProducts + ')'");

Cache.Insert(strCacheName, dataSet, null, DateTime.Now.AddMinutes(21), TimeSpan.Zero);
Trace.Write("//Lägg in ChooseBrand i cachen");
}
catch (Exception objException)
{
Trace.Warn("LoadChooseBrand() Fel!", objException.Message);
}
finally
{
if (conn != null)
{
conn.Close();
conn = null;
}
}
}
return dataSet;
}

By Jesper Lind

Perfmon-räknare saknar 32-bitars processer

Jobbar med ett kluster på tre Windows 2003-burkar. Vi har SQL Server installerade på två av dessa men operativsystemet är 32-bitar på den ena och 64-bitar på den andra.

Jag har försökt att övervaka hur databasen jobbar genom verktyget Perfmon men kunde inte se några räknare på 64-servern. Nu förstår jag varför.

Eftersom operativet är 64-bitar så laddas bara processer som körs i 64-läge. SQL Server 2000 ligger fortfarande och puttrar på 32-bitar och därför kom de inte med i Perfmon-listan.

Tony Rogersson's bloggpost var till stor hjälp för att komma till insikt med detta. Skriv helt enkelt in följande för att starta upp en Perfmon för 32-bitars-processer.

mmc /32 perfmon.msc

By Jesper Lind