Showing posts with label IT. Show all posts
Showing posts with label IT. Show all posts

Tuesday, August 23, 2011

Waiting for TelMex

Tuesday August 23rd, 2011



Still no Internet today. The house’s property manager, Cipriano Ramos (who has been a HUGE help to us as we’ve been trying to get settled in here) called TelMex today and we went through the tier-1 tech support to no avail. There are supposed to send a technician out in “24 to 36 hours.”


At Teizcali school starts at 7:50AM. Since we don’t have a car we walk to school. Our _route_ takes about 20 to 25 minutes. Thus wake up time is around 6:15 or so. We are not a bright-and-early type of family so this early start time plus the one hour difference in time zones between Oaxaca and Denver, CO, USA means things are a bit grouchy around here.


After walking down to B’s school this morning I found out that TELMEX techs can show up well outside of American or Mexican “business hours.” They can seemingly come as early as 7 am and as late as 8pm….any day of the week. And if you miss them when they come you allegedly go to the bottom of the queue. I will not be leaving the house it seems.


Tuesday, November 2, 2010

Increasing the Maximum File Upload Size in WSS v3/MOSS 2007


So there are three related issues when it comes to trying to allow larger files to be upload to a SharePoint WSS v3 or MOSS 2007 system:

1    1)      Several settings that specify the maximum file size allowed for uploading. We’ll call these settings “Max File Upload Size” settings though the actual property/attribute/setting label may be different in each area you’ll configure. Details are below….
2    2)      Several settings that specify the maximum timeout period (usually in seconds) for either the upload period or the http session.  We’ll call these settings the “timeout” settings though the actual property/attribute/setting label may be different in each area you’ll configure. Details are below….
3    3)      Several settings that are related to the SharePoint site/document indexer for the search shared service provider.  WE’ll call these settings “search crawler” settings though the actual property/attribute/setting label may be different in each area you’ll configure. Details are below….

The relationship between these items is as follows:  the bigger the document/file that you want to upload, the longer it will take, especially for users on low-bandwidth connections.  First, to control how much stuff can be shoved into the SharePoint server, WSS3/MOSS2007 (and 2010, too!) ship with caps on the uploadable size.  When we raise that value we increase the odds that some users will appear to the server to have “gone missing” while uploading large (i.e. slowly) files.  Thus the need to raise the timeout settings.  Also, because of the long lags during file uploads, the user’s security authentication may expire during the time they wait for the file to upload.  Increasing the security validation period can prevent forcing them to login again to see the result of their upload attempt.  Obviously there are security ramifications for changing this (at the Web Application’s zone. Note that one could forego these timeout config changes until/if users start complaining about failed uploads.  The (minor) ramifications of these changes to timeout settings are beyond the scope of this doc so for now we are just going to assume it’s easier to be proactive and do the timeout settings at the same time as the max file upload size setting mods, but do note that the timeout setting is optional until users have problems with the upload of the now allowed larger limit.  Finally, there is typically much desire for uploaded documents to be crawled by the SharePoint Search indexer so documents can be located by users using the search tools in SharePoint.  But just as there are problems introduced by allowing big files to be uploaded, similar problems are introduced by not putting some sort of cap on the size of a file that the crawler/indexer will try to “chew.”  16MB is the limit out of the box for WSS3/MOSS20007.  Often times (e.g. video file uploads, CAD drawings), it is not necessary or desired to raise this limit. But if the documents are text based, you may want to raise this limit to allow the data in the file beyond the 16MB point to be indexed.  I have had problems with raising the value though.  Let me know if you get it to work. J  For now, I have ended up leaving it at the default value and been ok with the note that gets put in the ShPt log file about a too large file being unable to be indexed.

All the changes we are going to make can easily be rolled back AS LONG AS YOU MAKE BACKUPS OF THE ITEMS PRIOR TO MODIFYING THEM – i.e. create a copy of *.config files and rename them (e.g. “Web.Config” copied to become “Web-ORIG as of yyyy-dd-mm hhmm.configOLD”), backup a registry node to a reg file prior to making mods, record ShPt settings in the Central Admin or SSP Search GUI with screenshots stored in a WordPad file.  Also be aware that there are typically SEVERAL Web.config files on a SharePoint server AND there is a difference between a Web.config and an Application.config file.  You may need to modify several Web.Config files and the exact path cannot be provided as it changes depending on how the ShPt server has been configured.  Ergo, when you see a path that mentions a virtual directory (e.g.) you must do the translating for your server AND make sure you alter the proper virtual directory for the ShPt site(s) you  are making the mods for.  Go slow, take notes of before/after and THINK!!!! I.e. the ass you save may be your own.

Max File Upload Size (MFUS) limit mods:

1    1)      First, calculate the value in bytes the size you want to raise the limit to.  E.g. 500MB = (500 * 1028 * 1024) = 524288000 Bytes.
2    2)      Open up Central Admin and for each Web application that contains the site(s) you are increasing the MFUS limit, open the “Web Application General  Settings” page. Increase the “Maximum Upload Size” setting to your desired MFUS limit in MB.
3    3)      Using the integer amount in bytes for your new MUFS limit, add the maxAllowedContentLength attribute and value in the Web.config for each virtual directory that maps to a site, zone, or Web application (extended or base WA) in SharePoint, locate the Web.config file.   A typical (EXAMPLE) path for such a Web.config looks like:
a.      C:\inetpub\wwwroot\wss\VirtualDirectories\80
b.     C:\inetpub\wwwroot\wss\VirtualDirectories\11001
e.g. this... web-ORIG as of 2010-08-02.config


               </configSections>
               <SharePoint>



 

…gets turned into this...


  </configSections>
  <system.webServer>
       <security>
  <requestFiltering>
  <requestLimits maxAllowedContentLength="524288000"/>
  </requestFiltering>
  </security>
  </system.webServer>
  <SharePoint>

Note that if doing timeout setting mods, you will return to this file (but I’m breaking this into functional sections for clarity of what affects what).
4    4)      If you are running on Windows Server 2008 (i.e. Internet Information Server 7.0) or R2 (i.e. IIS7.5), the following (optional) proactive change may  also need to be made.
a.      Add the same value for the maxAllowedContentLength attribute IF IT EXISTS.  The attribute, its element (or even the whole section ) may be missing. If not, you can create the attribute or make it look like <requestLimits maxAllowedContentLength="524288000"/> for the element and attribute (and any missing parent elements as shown in the example above) to the application.config file, located at:
                                                    i.     %windir%\system32\inetsrv\config\applicationhost.config

Timeout mods:

1    1)      If desired, to prevent user’s from having to re-authenticate after a long file upload, increase the time that a logged-in user is allowed to sit “idle” by going to ShPt Central Admin and on the appropriate Web Application(s)’s “Web Application General Settings” page (i.e. http://YourSharePointServer[:CAport]/_admin/vsgeneralsettings.aspx ) and increasing the “Web Page Security Validation” settings “Security validation expires’ value. Default is 30 minutes.  60 has generally worked for us in the past.
2    2)      for each  Web site (aka Virtual Server) in IIS Manager , change the connection timout limit (in Seconds) as appropriate for you new MFUS limit. E.g. default "120" (i.e. 2 minutes) to "3600" (i.e. 60 minutes). I.e. …
a.      Click Start, point to All Programs, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
b.      Right-click the virtual server that you want to configure, and then click Properties.
c.      Click the Web Site tab. Under Connections, type the number of seconds that you want in the Connection time-out box, and then click OK.

3    3)      Modify the “layouts” Web.config (i.e.  "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\web.config" by changing/adding the executionTimeout attribute and a max allowed value of 999999 in the Web.config’s httpRuntime element like so...


  <location path="upload.aspx">
  <system.web>
  <httpRuntime maxRequestLength="2097151" />
    </system.web>
  </location>

to this...

  <location path="upload.aspx"> 
  <system.web> 
    <httpRuntime executionTimeout="999999" maxRequestLength="2097151" /> 
    </system.web> 
 </location>

Note that the value in maxRequestLength will probably be different.  This value seems to be overridden by the <system.webServer> <security> <requestFiltering> <requestLimits maxRequestLength<  attribute’s value.  If you don’t find that to be true, you can change it to match your MUFS limit but IN Kilobytes, NOT Bytes. E.g.  524288000 Bytes  = 512000KB.

4    4)      add the executionTimeout attribute and a max allowed value of 999999 in the Web.config for each virtual directory that maps to a site, zone, or Web application (extended or base WA) in SharePoint, locate the Web.config file.   A typical (EXAMPLE) path for such a Web.config looks like:
a.      C:\inetpub\wwwroot\wss\VirtualDirectories\80
b.     C:\inetpub\wwwroot\wss\VirtualDirectories\11001
e.g. this...


<httpRuntime maxRequestLength="51200" />

becomes this...

<httpRuntime executionTimeout="999999" maxRequestLength="51200" />

Note that the value in maxRequestLength will probably be different.  This value seems to be overridden by the    attribute’s value.  If you don’t find that to be true, you can change it to match your MUFS limit but IN Kilobytes, NOT Bytes. E.g.  524288000 Bytes  = 512000KB.

Monday, January 18, 2010

Lessons Learned on SQL Server Instances and Ports

While working on a SQL 2008 install and problems encountered when a second instance was added, some questions came up about how SQL uses ports and allow remote access - especially when a second instance is added to a host computer. Here is the summary:

1) SQL Server 2005/2008 Express, Eval, Developer all install their instances (root OR follow-on) remote access turned OFF by default. References:
http://support.microsoft.com/kb/914277 and http://www.databasejournal.com/features/mssql/article.php/3692831/SQL-Server-2005-Express-Edition---Part-4---Surface-Area-Configration.htm )

2) SQL Server instances supplemental to the initial (aka "root") instance will use Dynamic port assignment for its "listening" port.

3) The default listening port for the initial instance of SQL Server is 1433 EXCEPT for Express which uses dynamic port assignment for ALL its instances by default.

4) The default listening port for additional instances is "dynamic" for all versions.

5) Because of the differences in how SQL Server installs and seems to modify Windows Firewall for the machine SQL is installed on, DSD-Best-Practices is to follow these steps (assuming your goals want remote access to the SQL Server AND you are allowed to make these mods):


a) Install the SQL Instances you want.

b) Use the (2005) "SQL Server Surface Configuration" / (2008) "SQL Server Configuration" program to enable remote client access to the SQL Server. (For 2008 details see: http://msdn.microsoft.com/en-us/library/dd857537(VS.85).aspx note that for 2005 it's done a bit different using the Surface Config tool)

c) Use the (2005) "SQL Server Surface Configuration" / (2008) "SQL Server Configuration" program to specify a (different!) set/static port for each instance (e.g. 1433 for the root instance 2433 for the next instance). (Restart the changed instances to put this into effect).

d) Create a rule to open the machines (Windows) firewall for the ports used for all SQL instances.

e) Test access from a remote machine.

6) The SQL Server Browser Service acts as sort of a proxy server or DNS server on a machine with more than one SQL Server instance. It handles attempts of SQL client's trying to find/reach a SQL Server (instance) by listening on port 1433 (on the server the SQL Server instances are on) and bouncing the requests to the actual port that one of the instances is really answering on. Ergo, on some items (System data source name wizard) you shouldn't expect to see or enter the instance name for a SQL Server. For example, if you have a machine named MySQLServer and the root instance is "MySQLServer" and the second instance is "MySQLServer\IamNumTwo" then you will only see "MySQLServer" in the dropdown.

7) SQL Server Browser Service Reference:
http://msdn.microsoft.com/en-us/library/ms181087.aspx

Tuesday, June 9, 2009

In the belly of the whale

So being adverse to specialization and drawn (like a moth to a flame) towards generalization, I have greatly enjoyed Windows IT Pro's new(er) article "What Would Microsoft Do?" written by Michael Morales, an MS Global Escalation Services team Senior Escalation Engineer. Just when I finally learned how to get Windows to not create a memory dump when it crashes, Mr. Morales has started piquing my interest in understand how to use those memory dumps (and other debugging and troubleshooting logs / tools).

Perhaps it's my tendency to want to make the simple complicated, but time and again I find that having an understanding of HOW something works (which is often best learned by studying something when it is failing to work), leads to being an all around better user, administrator and designer of interconnected systems (e.g. Microsoft software/networks).

Anywho, kudos to Michael Morales....oh, and I assume this MM is NOT the more infamous M.A.M. but then, maybe that prison vocational training really paid off.

Sunday, April 19, 2009

Moving Hyper-V VMs

Ok, in my never-ending attempt to keep all electronic files for the Deron S. Dilger Presidential Library, I added another TB of storage to the home LAN. I put it in the Windows Server 2008 box that has become my primary server. As this machine is acting as the Hyper-V Virtual Host for several VMs running on GTech's LAN, I wanted to get a second SATA drive in this box to try and get some better performance outta the VMs who were running from the system drive.

Anyway, got the 1TB drive added and formated and ran Robocopy to move a bunch of stuff (including the VM folders/files) off the C drive. Last time I moved around my Hyper-V VMs I had to export them and re-import them in Hyper-V Manager to get the type of directory structure I wanted (i.e. to keep the VM's XML and VHD files in their own folders for ease of grouping and backup). This time I figured there had to be an easier way.

Not only did I (ok, Google) find this great explanation of how Hyper-V Manager keeps track of "its" VMs, that link in turn pointed to a freeware utility (DiMASoft's Hyper-V File Manager Utility) that makes the whole moving of HV VMs super easy. I was cursing at Hyper-V at first, especially now that I've also been running VMWare for the last few months. Much easier to move around VM folders/files with VMWare! But now with this utility, I'm back to feeling like Hyper-V and VMWare are comparable (for my purposes).

I also learned about mklink. Plan to use that tool more to organize my electronic rat's nest. Let's hear it for abtractions and vitualizations.

Virtualize On, Baby!

Thursday, April 9, 2009

Motorcycle boy has a blog!?!?

Holy crap! C has a blog?!?!? Seems he is a bit shy and only lets invitees view and comment. Man is it the 21st century or what?

http://ch21squestforlorettas.blogspot.com/

Tuesday, January 6, 2009

Installing MS PerformancePoint

Damn, just keeping the names of the components straight is a bitch. Almost as bad as Sharepoint. Quick link to self to help keep it straight and get a quick overview of the PP install process... http://www.devx.com/enterprise/Article/37939

Virtual Reality

So I was evangelizing OS virtualization software to my dear friend W this weekend. He's a power-sysad who maintains both Windows and *nix systems for a living. Sadly, he hasn't had an excuse to get into playng with virtualization tools such as VMWare, Hyper-V, XenServer. Many with much more experience with VM offerings than I have written much on comparisons of each (e.g. http://blogs.zdnet.com/BTL/?p=8880 ). Although I was introduced to virtualization with MS's Virtual Server 2005, I primarily have used MS Hyper-V on my research server to really start poking into using VMs. But as of late, I've started using VMWare Workstation v6.5 at work. Although I didn't much like the admin console in VMWare as much as the simpler (and I think, more intuitive) one in Hyper-V Manager, I've come round more and more to liking VMWare. The performance of the VM guests seems a bit better on my laptop's VMWare than what I see on my more robust hardware running Hyper-V. This could be that the configuration of the host OS and the overhead of Server 2008, yet I would have expected that 64bit dual-core CPU to be a bit faster than my WinXP 32bit laptop acting as a host.

So it seems that MS has now released a free version of Server 2008 Hyper-V. I'm not sure I'd want to bother with the nuances of this version for the sake of getting Hyper-V, but for those who want to experiment with yet another "free" version, there is now an option for true MS Hyper-V without having to buy a Server 2008 license. Personally, it seems that with the availability of VMWare Workstation and Server created VMGuests, one might be just fine with VMPlayer for personal research of alternate Guest OSs. For a more robust network solution, I will be sticking with Hyper-V (since I'm so Microsoft biased), but am curious to hear my *nix-capable friend's conclusions as he digs into the plethora of (wider) options available to him (e.g. Red Hat Fedora's KVM, opensource XEN). There is no doubt in my mind that those who have wrestled with maintaining networks too small to justify enterprise-class systems-management tools MUST investigate virtualization tools or risk being rightly identified as holdouts of an antiquated-mindset.

Tuesday, November 11, 2008

Code Charge Studio and helping hands for weary Web app developers.

So for the last two weeks I've been evaluating (aka trying to build something that works) a RAD tool for Web apps. Code Charge Studio 4 is a fine tool for rapidily spitting out pleasant looking Web sites for CRUD actions on database driven sites. It provides a very simple front-end for building the main structure of the app, but generates readily manipulatible code (I'm having it output C# ASP.NET but it also does PHP, Java, "classic" ASP). In between it provides a way to "reach through" the IDE tools and easily add custom code that won't get overwritten by the CCS code generator. That is about as much as I've gone behind the curtain, but I have found it much easier to learn for the fairly common features for a Web front-end for a database application than I have with MS Visual Studio. I suspect as I get more skilled with the CCS tool and C#/ASP.NET, I'll reach more often for the more advanced powers of VS2005/2008. But for now, CCS has helped me get some stuff off my to-do plate quicker than I could have with my current VS2005 skills AND it has helped me advance my C# skills from reverse engineering the code it outputs. Thumbs Up.

Thursday, October 30, 2008

"We have met the enemy and he is us."

- Pogo

So I've spent the last two days going crazy trying to get Microsoft SQL Server 2005 Reporting Services working on my laptop. I was getting an ASP.NET error when I tried to hit the report server's Web user interface (i.e. http://localhost/Reports). My error (for the datasphere search engines) was along the lines of:


Server Error in '/Reports'
Application.


Parser Error

Description: An error occurred during the parsing of a resource
required to service this request. Please review the following specific parse
error details and modify your source file appropriately.


Parser Error Message: Could not load type
'Microsoft.ReportingServices.UI.GlobalApp'.


Source Error:
Line 1: <%@ Application Codebehind="Global.asax.cs" Inherits="Microsoft.ReportingServices.UI.GlobalApp" %>


Source File: C:\Program Files\Microsoft SQL
Server\MSSQL.3\Reporting Services\ReportManager\global.asax


Line: 1

Version Information: Microsoft .NET Framework
Version:2.....



After much grasping at thin straws from the short list of online references to this error, and getting nowhere, I had gone so far as to uninstall and re-install MSSQL Server 2005 and IIS twice. I then spent a ton of time:

  1. Running Process Monitor to see if file or registry ACLs were preventing something from getting to what it needed.
  2. Modifying ACLs on the ASPNET temporary files folder.
  3. Modifying ACLs on the Report Manager folder.
  4. Modifying Local Security Policy settings.
  5. Comparing a working SSRS install on a W2K3 Server machine.
  6. Copying SSRS files from a working machine.
  7. Repeatedly running aspnet_regiis with various parameters
  8. Playing with the GAC trying to get my stupid laptop to "understand" the parent assembly (i.e. ReportingServicesWebUserInterface.dll) it couldn't seem to find.
  9. Swearing, begging, giving up, swearing some more.


Then, in the fashion such successful epiphanies seem to come in - i.e. randomly, sans connection to proceeding efforts - I remembered that on some work laptops we had had problems with Mortgage Cadence Orchestrator installs and had ended up modifying the machine Web.Config file (i.e. C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.Config) to remove a line that was causing MCO to fail to launch.


<configuration>
blahblahblah...
<system.web>
<authorization>
blahblahblah...
</authorization>

<browsercaps>
blahblahblah...
</browsercaps>

<clienttargets>
blahblahblah...
</clienttargets>

<assemblies>
blahblahblah...
<add assembly="*">
blahblahblah...
</assemblies>
blahblahblah...

This wildcard directive to load all assemblies in the Web application's folder caused the MCO app to try and load non-.NET DLL files that were in the MCO app folder. I never heard a good explanation as to why this caused problems on only some consultants' laptops. Regardless, our "quick-fix" to circumvent that problem was to delete that wildcard line in the machine's Web.config file (this was known as the "Web.config line 61 wildcard problem"). Yet, now when I returned that line to the laptop's Web.Config file - SHAZAM! - the report server started working. Two days gone due to short-routing around a problem many months ago. Life at times seems nothing but dealing with the unintended consequences of previous actions/decisions...and I'm talking not just about I.T., parenting, or rescued turtles.